【发布时间】:2021-02-26 14:05:36
【问题描述】:
我有一个对象数组,其中包含对象属性:
let allPersons = [
{ id: "abcdefg",
name: "tom",
...
phone: {
brand: "blah"
id: "hijklm"
...
}
},
{ id: ....}, {...}, {...}
];
我需要做的是过滤这些对象并返回所有电话,按 id 过滤它们,以便返回的所有电话都是唯一的。
我首先尝试检索所有手机:
// allPersons is the full array mentioned above
let phones = [...new Set(allPersons.map(person => person.phone))];
然后我尝试归还所有独特的手机,但没有成功:
let result = phones.map(phone => phone.id).filter((value, index, self) => self.indexOf(value) === index)
这仅返回手机的唯一 ID,但我想要整个对象。我能做什么?
更新: 电话 ID 不是唯一的,例如nokia3310 的 id 为 1,nokia3330 的 id 为 2,依此类推:所以 tom 和 john 可以拥有相同的电话,电话 id 可以重复!
【问题讨论】:
-
你是指对象的
Id,还是Phone Id? -
手机的 ID 不是唯一的吗?
-
@AndresGardiol 是的,它们是独一无二的,但我想要整个电话对象作为回报
-
@berkobienb the phoneId !
-
@Diego,如果您想返回整个电话对象,请检查我的答案,它会从每个对象中获取整个电话对象并将它们存储在一个您可以使用的数组中
标签: javascript node.js filtering