我有一个包含多个对象的数组
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 ()