我正在基于JSON提要创建表视图,因此其中一个最大的问题是,当我的标签(行)保持一致时,cols上的表数据会发生变化
请参考下图

如你所见,在第二个记录值1:3应该放在第一列
这是我的对象数组:
const label = [{label: 'test1', labelId:'1'},{label: 'test2', labelId:'2'}]
const cols = [
[{labelId:'1', value:'One'},{labelId:'2', value:'Two'}],
[{labelId:'1', value:'Three'}],
[{labelId:'2', value:'Four'}]
]我希望能够比较它们,这样我就可以指出哪一个没有对应的标签。因此,我将能够用空的<td></td>替换它们
因此,作为一个建议,这是我的尝试:
const labelCols = cols.map(col => {
const arrayOfMatch = labels.findIndex(label => label.labelId === col.labelId);
console.log(col)
if(arrayOfMatch !== 1) { //matching label exists
return { ...col, ...labels[arrayOfMatch] };
} else {
return { ...col, label: '' }; // insert empty label
}
});
console.log(labelCols)我希望我的JSON会是这样的:
const cols = [
[{labelId:'1', value:'One'},{labelId:'2', value:'Two'}],
[{labelId:'1', value:'Three'},{}],
[{},{labelId:'2', value:'Four'}]
]如果有人能想出更好的解决方案,请告诉我
提前感谢!
发布于 2018-11-23 11:22:59
我认为您正在尝试“合并”您的对象,然后从中生成表行。考虑到你的对象实际上是这样的:
const labels = [{label: 'test1', labelId:'1'},{label: 'test2', labelId:'2'}];
const cols = [{labelId:'1', value:'One'},
{labelId:'2', value:'Two'},
{labelId:'3', value:'Three'},
{labelId:'4', value:'Four'},
];
const labelCols = cols.map(col => {
const arrayOfMatch = labels.findIndex(label => label.labelId === col.labelId);
if(arrayOfMatch !== -1) { //matching label exists
return { ...col, ...labels[arrayOfMatch] };
} else {
return { ...col, label: '' }; // insert empty label
}
});labelCols将包含如下内容:
labelCols = [{labelId:'1', value:'One', label: 'test1'},
{labelId:'2', value:'Two', label: 'test2'},
{labelId:'3', value:'Three', label: ''},
{labelId:'4', value:'Four', label: ''},
];然后,如果要呈现带有标签的td元素,请执行以下操作:
<table>
//other codes
<tr>
{labelCols.map(item => <td>{item.label}</td>)}
</tr>
//other codes
</table>发布于 2018-11-23 11:12:29
// For comparing two array, array must be with same type of same length
var isEqualArray = labels.map((label)=>{
cols.map((col)=> label.labelId === col.labelId)
}).filer((item) => item === true)
.length === labels.length;
if (isEqualArray ) {
// Equal
}https://stackoverflow.com/questions/53440147
复制相似问题