Javascript 通过ID从列表中检索多个项目

Javascript 通过ID从列表中检索多个项目,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个数组,例如: const cars = [ { id: 23423, brand: 'bmw', doors: 2, color: 'red' }, { id: 23452, brand: 'volvo', doors: 4, color: 'gray' }, { id: 97456, brand: 'citroen', doors: 4, color: 'black' }, { id: 45784, brand: 'dodge', doors: 2, color: 'r

我有一个数组,例如:

const cars = [
  { id: 23423, brand: 'bmw', doors: 2, color: 'red' },
  { id: 23452, brand: 'volvo', doors: 4, color: 'gray' },
  { id: 97456, brand: 'citroen', doors: 4, color: 'black' },
  { id: 45784, brand: 'dodge', doors: 2, color: 'red' },
  { id: 23452, brand: 'ferrari', doors: 2, color: 'red' },
  { id: 23522, brand: 'bmw', doors: 2, color: 'blue' }
];
这里我有一个ID列表,比如:
[4578423522]

我想找到使用map、filter或reduce来使用ids数组检索第一个数组中的项的最佳方法

谢谢

ids
数组中转换a,并使用仅获取集合中存在的项目:

const cars=[
{id:23423,品牌:'bmw',车门:2,颜色:'red'},
{id:23452,品牌:'volvo',车门:4,颜色:'gray'},
{id:97456,品牌:“雪铁龙”,车门:4,颜色:“黑色”},
{id:45784,品牌:“道奇”,门:2,颜色:“红色”},
{id:23452,品牌:'法拉利',车门:2,颜色:'红色'},
{id:23522,品牌:'bmw',车门:2,颜色:'blue'}
];
常量ID=[4578423522];
常量idsSet=新集合(ID);
const result=cars.filter(({id})=>idsSet.has(id));
控制台日志(结果)简单如下:

const
汽车=[
{id:23423,品牌:'bmw',车门:2,颜色:'red'},
{id:23452,品牌:'volvo',车门:4,颜色:'gray'},
{id:97456,品牌:“雪铁龙”,车门:4,颜色:“黑色”},
{id:45784,品牌:“道奇”,门:2,颜色:“红色”},
{id:23452,品牌:'法拉利',车门:2,颜色:'红色'},
{id:23522,品牌:'bmw',车门:2,颜色:'blue'}
],
ids=[4578423522];
设arr=cars.filter(elem=>ids.includes(elem.id));
控制台日志(arr)您可以使用进行筛选

此方案使用a作为对象的
id
属性

var cars=[{id:23423,品牌:“宝马”,车门:2,颜色:“红色”},{id:23452,品牌:“沃尔沃”,车门:4,颜色:“灰色”},{id:97456,品牌:“雪铁龙”,车门:4,颜色:“黑色”},{id:45784,品牌:“道奇”,车门:2,颜色:“红色”},{id:23452,品牌:“法拉利”,车门:2,颜色:“红色”},{id:23522,品牌:“宝马”,车门:2,颜色:“蓝色”}],
ids=[4578423522],
结果=cars.filter({id})=>ids.includes(id));

控制台日志(结果)如何定义“最佳方式”而不是转换为集合,您可以只使用
数组。包括
为什么使用集合?要停止重复?Set.has比array.includes快-我想我需要一种基于缩减器的方法。我可能不太明白在哪种情况下我可以从中得到最好的结果。reduce可以用于任何东西,但是filter更具体,它只返回数组中的一些项。如果需要,reduce适用于单个循环,并且不过滤某些部分,而是更改返回的结果。