我有一个像这样的数组
[{
Item: pen,
Color: blue,
Brand: cello
},{
Item: pen,
Color: red,
Brand: cello
},{
Item: pen,
Color: blue,
Brand: cello
}]
我希望结果像
[{
Item: pen,
Brand: cello
}]
我需要删除一个属性" Color"从数组中获取唯一值。有人可以帮助我如何实现这一输出吗?
答案 0 :(得分:1)
你可以保留一个新的空数组,迭代每个对象的原始数组删除颜色键,如果它不存在于新数组中,则将其推送到新数组。
var arr = [{Item: 'pen', Color: 'blue', Brand: 'cello'}, {Item: 'pen', Color: 'red', Brand: 'cello'}, {Item: 'pen', Color: 'blue', Brand: 'cello'}];
var newArr = [];
arr.forEach(x => {
delete x.Color
for(var i=0; i<newArr.length; i++)
if(newArr[i].Item === x.Item && newArr[i].Brand === x.Brand)
return;
newArr.push(x);
});
console.log(newArr);
答案 1 :(得分:0)
您可以使用 <color name="whiteColor">#FFFFFF</color>
和array#reduce
。使用array#some
从对象中删除delete
属性。
Color
&#13;
答案 2 :(得分:0)
您可以映射数组中的每个对象,并将其值分配给新对象。这个新对象可以删除颜色键并推送到不同的数组。
var array = [{
Item: 'pen',
Color: 'blue',
Brand: 'cello'
},{
Item: 'pen',
Color: 'red',
Brand: 'cello'
},{
Item: 'pen',
Color: 'blue',
Brand: 'cello'
}];
const newArray = [];
array.map(obj => {
let newObject = Object.assign({}, obj);
delete newObject.Color;
if(newArray.length) {
newArray.map(newObj => {
if(newObj.Item !== newObject.item && newObj.Brand !== newObject.Brand) {
newArray.push(newObject);
}
});
} else {
newArray.push(newObject);
}
});
console.log(array);
console.log(newArray);
&#13;