如何删除对象数组中的重复项?

用户名

我有一个看起来像这样的数组:

var array = 
[
    {
        key : { id : 1 , pack : "pack 1"},
        values : [
            {
                item : { id : 1 , name : "item1"},
                itemP : {id : 2 , name : "itemP12"}
            },
            {
                item : { id : 4 , name : "item4"},
                itemP : {id : 2 , name : "itemP12"}
            },
        ]
    }
]

我想删除重复的itemP,因此它的功能如下所示:

var array =
[
    {
        key : { id : 1 , pack : "pack 1"},
        values : [
            {
                item : { id : 1 , name : "item1"},
                itemP : {id : 2 , name : "itemP12"}
            },
            {
                item : { id : 4 , name : "item4"},
                itemP : null
            },
        ]
    }
]

当我尝试时,我总是会出错。有可能这样做吗?

更新资料

我尝试这样做:

  console.log(array.map(pack => 
    pack.values.map((item) => {
      var test =  JSON.stringify(item)
      var set = new Set(test)

      return Array.from(set).map((item)=> JSON.parse(item))
      }
    )

  ))

JSON输入意外结束

我也尝试了一些可以过滤的东西,但是没有用:

  console.log(this.package.map(pack => pack.values.filter(
    (value, index , array) => array.itemP.indexOf(value) === index
  )))
华盛顿瓜迪斯

我建议不要克隆每个关键属性,而是建议克隆整个结构,并在克隆的对象中将对象值设置为null,以避免无意间改变原始结构。

function nullifyDupes(array) {
  const clone = JSON.parse(JSON.stringify(array));
  const seen = {};

  clone.forEach(pack => {
    pack.values.forEach(items => {
      for (const item in items) {
        const id = items[item].id;

        if (seen[id]) items[item] = null;
        else seen[id] = true;
      }
    });
  });
  
  return clone;
}

const originalArray = [{
  key : { id : 1 , pack : "pack 1"},
  values : [{
    item : { id : 1 , name : "item1"},
    itemP : {id : 2 , name : "itemP12"}
  },
  {
    item : { id : 4 , name : "item4"},
    itemP : {id : 2 , name : "itemP12"}
  }]
}];

const mutatedArray = nullifyDupes(originalArray);
console.log(mutatedArray);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从数组对象属性值中删除重复项?

如何删除和计算对象数组中的重复项?- Javascript

使用对象从数组中删除重复项

javascript从对象数组中删除重复项

删除对象数组Javascript中的重复项

从GeoFire对象数组中删除重复项

从对象数组中删除重复项

从对象的多维数组中删除重复项

Javascript从对象数组中删除重复项

从对象数组中删除重复项

删除对象数组中的重复项

如何从对象列表中删除重复项

如何删除数组中的重复项?

如何从数组列表中删除重复项

如何从AutoHotkey数组中删除重复项?

如何从数组中删除否定重复项?

如何删除数组中的重复项

如何从数组中删除重复项?

如何首先结合对象的属性,然后使用Javascript删除对象数组中的重复项

在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

Javascript es6-如何删除对象数组中的重复项(最后一个重复项除外)?

从 Typescript 中的对象数组中删除重复项

从对象中删除重复项并合并到数组中

从JavaScript中的对象数组中删除重复项

从jsonnet中的对象数组中删除重复项

从 Javascript / Typescript 中的数组中删除子对象重复项

如何从Node.js中的JSON对象数组中删除重复项

如何使用传播运算符从对象数组中删除重复项

如何在JavaScript中查找(和删除重复项)对象数组的组合?