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

时间:2020-03-16 11:42:31

标签: javascript

嗨,我正在尝试从对象数组中删除重复项。但这不能按预期工作。

这是我的数组:

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,它应该删除重复项,但这目前没有发生。.我知道关于此存在一些问题,但对我来说没有任何作用。所以有人请我建议我该怎么做。

1 个答案:

答案 0 :(得分:0)

您可以在filterid上使用name

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);

相关问题