【发布时间】:2019-02-28 14:11:03
【问题描述】:
我有一个这样的动态对象数组:
var arr = [
{state: "FL"},
{state: "NY"},
{state: "FL"},
{gender: "Male"},
{state: "NY"},
{gender: "Female"},
{gender: "Female"},
{year: "1990"}
]
我怎样才能得到唯一的对象?
所需的输出是一个仅包含唯一对象的数组:
arr = [
{state: "FL"},
{state: "NY"},
{gender: "Male"},
{gender: "Female"},
{year: "1990"}
]
我正在尝试使用 reduce 进行类似的操作,但这样我需要知道对象键:
arr = arr.reduce((acc, curr) =>
acc.find(e => e['state'] === curr['state']) ? acc : [...acc, curr], [])
这不是重复的,因为其他问题没有使用“动态对象”来获得唯一性
【问题讨论】:
-
想要的输出是什么?
-
.find(e => JSON.stringify(e) === JSON.stringify(curr))将是一种快速而肮脏的方式。 -
您的对象是否总是只有一个带有字符串值的键?如果没有,你能告诉我更多关于它们的信息吗,所以我可以尝试给出一个具体的解决方案,而不是使用 JSON.stringify,这对于一个大数组来说可能会很慢。
-
对象可以有多个键,但值始终是字符串。 var arr = [ {state: "FL", year: "1980", class: "A"}, {state: "NY"}, {state: "FL"}, {gender: "Male"}, {state : "NY"}, {gender: "Female"}, {gender: "Female"}, {year: "1990"} ]
标签: javascript unique