访问相同数组中的重复对象?



我有一个包含多个对象的数组

arr = [
{name: 'xyz',
age: 13,
},
{name: 'abc',
age: 15,
},
{name: 'abc',
age: 15,
}]

我如何在这个数组中找到重复的对象并删除在数组中重复的对象?它们都在一个数组中。

道歉。我刚刚意识到我要做的是,完全删除对象,如果有一个重复的键…因此,如果年龄相似,我将删除对象名称&;default &;。这可能吗?

arr = [
{name: 'xyz',
entry: 1,
age: 13,
},
{name: 'abc',
entry: 2,
age: 15,
},
{name: 'def',
age: 13,
entry: 3
}]

您可以通过以下步骤实现:

  • 将每个元素转换为键排序的对象,这将使对象在键值对顺序方面保持一致,这将有助于我们下一步
  • 将数组映射为json字符串化的值,并将其存储到Set()中,这将有助于我们只存储唯一的字符串化对象
  • Set()转回数组
  • 通过JSON.parse()将数组映射回对象

const arr = [
{ name: "xyz", age: 13 },
{ age: 15, name: "abc" },
{ name: "abc", age: 15 },
]
const sortKeys = obj =>
Object.fromEntries(
Object.entries(obj).sort((keyValuePairA, keyValuePairB) =>
keyValuePairA[0].localeCompare(keyValuePairB[0])
)
)
const res = Array.from(
arr
.map(sortKeys)
.map(el => JSON.stringify(el))
.reduce((set, el) => set.add(el), new Set())
).map(el => JSON.parse(el))
console.log(res)

引用

Object.entries ()

Object.fromEntries ()

最新更新