Javascript 将元素与另一个数组匹配的数组(具有键“id”)的筛选器对象

Javascript 将元素与另一个数组匹配的数组(具有键“id”)的筛选器对象,javascript,Javascript,我有一个数组的对象,每个对象都有一个键“id”,还有另一个数组的元素实际上是第一个数组的id,所以我想从第一个数组中筛选出与第二个数组的id匹配的对象 const categories = [ { id: 1, name: 'Permaculture', active: false, createdAt: '2018-06-18T11:38:41.000Z', updatedAt: "2018-06-18T11:38:41.000Z" }, { id:

我有一个数组的对象,每个对象都有一个键“id”,还有另一个数组的元素实际上是第一个数组的id,所以我想从第一个数组中筛选出与第二个数组的id匹配的对象

const categories = [ 
  { id: 1,
    name: 'Permaculture',
    active: false,
    createdAt: '2018-06-18T11:38:41.000Z',
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 2,
    name: 'Food Forest',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 3,
    name: 'Community Supported Farming (CSA)',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 4,
    name: 'Urban Farming',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 5,
    name: 'Roof Farming',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 6,
    name: 'Roof Gardening',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 7,
    name: 'Gardening',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 8,
    name: 'Indoor Plantation',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 9,
    name: 'Soil Culture',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 10,
    name: 'Tropical Farming',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 11,
    name: 'Greenhouse',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 12,
    name: 'Hobby Farming',
    active: false,
    createdAt: "2018-06-18T11:38:41.000Z",
    updatedAt: "2018-06-18T11:38:41.000Z" },
  { id: 13,
    name: 'WWOOF',
    active: false,
    createdAt: "2018-06-18T11:44:56.000Z",
    updatedAt: "2018-06-18T11:44:56.000Z" },
  { id: 14,
    name: 'Organic Farming',
    active: false,
    createdAt: "2018-06-18T11:44:56.000Z",
    updatedAt: "2018-06-18T11:44:56.000Z" } 
];

const ids = [1, 4, 2];

const expected_res =    [
    {
        id: 1,
        name: "Permaculture" 
    },
    {
        id: 4,
        name: "Urban Farming"
    },
    {
        id: 2,
        name: "Food Forest"
    }
]

这将根据您的条件进行过滤,但不会保持id的顺序

常量类别=[{ id:1, 名称:'永久文化', 活动:错误, 创建日期:“2018-06-18T11:38:41.000Z”, 更新日期:2018-06-18T11:38:41.000Z }, { id:2, 名称:“食物森林”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:3, 名称:“社区支持农业CSA”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:4, 名称:“城市农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:5, 名称:“屋顶农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:6, 名称:'屋顶园艺', 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:7, 名称:"园艺",, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:8, 名称:‘室内种植园’, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:9, 名称:“土壤培养”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:10, 名称:“热带农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:11, 名称:'温室', 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:12, 名称:“爱好农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z }, { id:13, 名称:“WWOOF”, 活动:错误, 创建日期:2018-06-18T11:44:56.000Z, 更新日期:2018-06-18T11:44:56.000Z }, { 身份证号码:14, 名称:“有机农业”, 活动:错误, 创建日期:2018-06-18T11:44:56.000Z, 更新日期:2018-06-18T11:44:56.000Z } ]; 常量id=[1,4,2]; console.logcategories.filterx=>ids.includesx.id您可以使用。reduce实现这一点,因为您只需要结果中的id和名称。如果当前对象的id在id数组中,则可以将其添加到acc累加器中

const categories=[{id:1,name:Permaculture,active:!1,createdAt:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:2,name:Food Forest,active:!1,createdAt:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:3,名称:社区支持农业CSA,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:4,名称:城市农业,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:5,名称:屋顶农业,活动:!1,创建日期:2018-06-18T11:38:000Z,更新日期:2018-06-18:41.000Z},{id:6,名称:屋顶园艺,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:7,名称:园艺,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:8,名称:室内种植园,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:41.000Z},{id:9,名称:土壤培养,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:10,名称:热带农业,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:11,名称:温室,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:41.000Z},{id:12,名称:爱好农业,活动:!1,创建日期:2018-06-18T11:38:41.000Z,更新日期:2018-06-18T11:38:41.000Z},{id:13,名称:WWOOF,活动:!1,创建日期:2018-06-18T11:44:56.000Z,更新日期:2018-06-18T11:44:56.000Z},{id:14,名称:有机农业,活动:!1,创建日期:2018-06-18T11:44:56.000Z,更新日期:2018-06-18T11:56.000Z}, ids=[1,4,2], res=categories.reduceacc,{id,name}=>ids.includesid?[…acc,{id,name}]:acc,[]; console.logres;Use array.filter过滤器将检查对象id是否在id数组中。如果存在,则将其插入数组。在迭代所有元素后,它将返回数组

常量类别=[ {id:1, 名称:'永久文化', 活动:错误, 创建日期:“2018-06-18T11:38:41.000Z”, 更新日期:2018-06-18T11:38:41.000Z}, {id:2, 名称:“食物森林”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:3, 名称:“社区支持农业CSA”, 活动:错误, 创建日期:20 18-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:4, 名称:“城市农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:5, 名称:“屋顶农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:6, 名称:'屋顶园艺', 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:7, 名称:"园艺",, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:8, 名称:‘室内种植园’, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:9, 名称:“土壤培养”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:10, 名称:“热带农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:11, 名称:'温室', 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:12, 名称:“爱好农业”, 活动:错误, 创建日期:2018-06-18T11:38:41.000Z, 更新日期:2018-06-18T11:38:41.000Z}, {id:13, 名称:“WWOOF”, 活动:错误, 创建日期:2018-06-18T11:44:56.000Z, 更新日期:2018-06-18T11:44:56.000Z}, {id:14, 名称:“有机农业”, 活动:错误, 创建日期:2018-06-18T11:44:56.000Z, 更新日期:2018-06-18T11:44:56.000Z} ]; 常量id=[1,4,2]; console.logcategories.filtere=>ids.indexOfe.id=-1?e:错