【发布时间】:2021-06-16 07:12:59
【问题描述】:
我有一个对象列表,它们看起来像这样:
const fruit = [
{
name: 'banana',
id: 1
},
{
name: 'apple',
id: 8
},
{
name: 'orange',
id: 3
}
];
我有一个 ID 列表:
const ids = [8, 1];
我希望在我的 id 列表中获取所有具有 id 的“水果”,即我希望我的结果看起来像:
const result = [
{
name: 'apple',
id: 8
},
{
name: 'banana',
id: 1
}
]
我基本上有一个“有效”的解决方案:
let result = [];
for (let i = 0; i < ids.length; i += 1) {
const foundFruit = fruit.find(x => x.id === ids[i]);
result.push(foundFruit);
}
但最终我想知道这是否是最有效的方法,就像在我的真实示例中一样,我的水果列表可能有数千个水果长,而且我同样可以有一个巨大的 id 列表。
这种方法是最好的还是有更有效的方法来映射这些结果?
【问题讨论】:
-
当然,只要
fruitMap = new Map(fruit.map(f => [f.id, f]))然后result = ids.map(id => fruitMap.get(id))
标签: javascript arrays object search find