首页 > 解决方案 > 如何检索对象数组的某些属性并将其放入新的对象数组中?

问题描述

我有一个对象数组,如下所示,

data: [
    {
      name: 'name1',
      id: '1',
      description: 'name 1 description',
    }, 
    {
      name: 'name2',
      id: '2',
      description: 'name 2 description',
    },
    {
      name: 'name3',
      id: '3',
      description: 'name 3 description',
    },
]

我有一个由像这样的 id 组成的数组

const id_list = ['1','2'];

现在我想从 id 与 id_list 匹配的数据数组对象中检索 id 和 name

所以预期的输出是

const new = [
  {
    id: '1',
    name: 'name1',
  },
  {
    id: '2',
    name: 'name2',
  }
]

我是使用 react、javascript 或 typescript 的新手。有人可以帮我解决这个问题。谢谢。

我试过什么?

我知道要根据一个值过滤值

所以如果我必须根据一个 id 过滤说'1'我可以做

const new = data.filter((item) => id === item.id);

但在我的情况下,我想过滤与 id_list 数组匹配的所有项目,并且应该只检索匹配的对象名称和 id 并将其放入数组中。

标签: javascript

解决方案


您可以使用带有find 方法的map 函数将每个 id 映射到对应的对象id_listdata

const result = id_list.map((id) => data.find((d) => d.id === id));

之后,您将拥有由 id 找到的所有对象result。您可以仅使用所需的道具或再次映射并仅获取所需的属性。

const final = result.map(({ id, name })=> ({ id, name }))

推荐阅读