【问题标题】:Remove duplicates from array of objects - Javascript [duplicate]从对象数组中删除重复项 - Javascript [重复]
【发布时间】:2020-03-16 21:18:04
【问题描述】:

您好,我正在尝试从对象数组中删除重复项。但这并没有按预期工作。

这是我的数组:

const arr = [{
  PData: [{
      id: '1',
      name: 'Book'
    },
    {
      id: '2',
      name: 'Bag'
    },
    {
      id: '2',
      name: 'Bag'
    },
  ]
}]

const RemoveDuplicates = (array, key) => {
  return array.reduce((arr, item) => {
    const removed = arr.filter(i => i[key] !== item[key]);
    return [...removed, item];
  }, []);
};
var result = RemoveDuplicates(arr, 'id')
console.log(result);

预期输出:

[{
  PData: [{
      id: '1',
      name: 'Book'
    },
    {
      id: '2',
      name: 'Bag'
    },
  ]
}]

基于 id 它应该删除重复项,但目前没有发生这种情况。我知道存在一些关于此的问题,但对我没有任何作用。所以有人请建议我怎么做。

【问题讨论】:

  • 要删除重复项的数组嵌套在一个对象中,但您只是在“根”数组上运行函数

标签: javascript


【解决方案1】:

您可以使用filter,这是idname 的方法。

const arr = [{
  PData: [{
      id: '1',
      name: 'Book'
    },
    {
      id: '2',
      name: 'Bag'
    },
    {
      id: '2',
      name: 'Bag'
    },
  ]
}]
arr[0].PData = Object.values(arr[0].PData).filter((v,i,a)=>a.findIndex(t=>(t.id === v.id && t.name=== v.name))===i)
console.log(arr[0].PData);

【讨论】:

  • 但是我的数组不是这样的
  • @royal 查看更新
猜你喜欢
  • 2020-10-25
  • 2017-04-10
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 2016-07-02
相关资源
最近更新 更多