获得字段数组的唯一值

时间:2017-09-23 11:07:31

标签: javascript json

我有一个像这样的数组

[{
  Item: pen,
  Color: blue,
  Brand: cello
},{
  Item: pen,
  Color: red,
  Brand: cello
},{
  Item: pen,
  Color: blue,
  Brand: cello
}]

我希望结果像

[{
  Item: pen,
  Brand: cello
}]

我需要删除一个属性" Color"从数组中获取唯一值。有人可以帮助我如何实现这一输出吗?

3 个答案:

答案 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属性。

&#13;
&#13;
Color
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以映射数组中的每个对象,并将其值分配给新对象。这个新对象可以删除颜色键并推送到不同的数组。

&#13;
&#13;
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;
&#13;
&#13;