取以下两个数组:
const array1 = [
{
props: {
type : 'text',
id : 'item1',
name : 'item1',
value : '@item1@',
},
},
{
props: {
type: 'hidden',
id: 'item2',
name: 'item2',
value: '@item2@',
},
}
];
const array2 = [
{
props: {
type: 'hidden',
id: 'item1',
name: 'item1',
value: '@item1@',
},
}
];
我想要做的是将它们连接成一个数组,并根据id属性删除任何重复项。不过这里需要说明的是,它的对象不具有type的hidden必须遵。
所以我基本上应该留下 的内容array1,因为重复项 fromarray2的type值为hidden,如下所示:
// Result
[
{
props: {
type : 'text', // Note the type here is "text"
id : 'item1',
name : 'item1',
value : '@item1@',
},
},
{
props: {
type: 'hidden',
id: 'item2',
name: 'item2',
value: '@item2@',
},
}
];
我可以使用以下方法轻松连接它们:
const array = array1.concat(array2);
我的想法是然后使用过滤器,但我的大脑有点融化。这是我到目前为止的想法:
const concat = (array1, array2) => {
const array = array1.concat(array2);
const ids = [];
// Create array of ID's
for (const i in array1) {
ids.push(array1[i].props.id);
}
return array.filter((obj) => {
if (obj.props.type !== 'hidden' && ids.includes(obj.props.id)) {
return true;
}
return false;
});
};
在这里使用Reduce会是更好的方法吗?
这是我到目前为止所拥有的 JSFiddle:https ://jsfiddle.net/64uprbhn/
呼如林
慕丝7291255
相关分类