You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数组对象中筛选出指定元素组成新的数组对象?

实现方法

你可以通过以下几种简洁的方式实现需求:

方法一:使用filter筛选(保留原数组中匹配元素的顺序)

先定义需要筛选的目标名字集合,再用Array.filter()遍历原数组,留下符合条件的元素:

const mainArray = [
   {id: 1, name: 'John', age: 10},
   {id: 2, name: 'Mark', age: 14},
   {id: 3, name: 'Kevin', age: 15},
   {id: 4, name: 'Julie', age: 16},
   {id: 5, name: 'Liz', age: 10},
   {id: 5, name: 'Emma', age: 11},
   {id: 6, name: 'Robert', age: 13},
];

// 定义需要筛选的名字集合
const targetNames = ['Mark', 'Kevin', 'Emma'];
// 筛选符合条件的元素
const specialKids = mainArray.filter(item => targetNames.includes(item.name));

console.log(specialKids);
// 输出结果:
// [ {id: 2, name: 'Mark', age: 14}, {id: 3, name: 'Kevin', age: 15}, {id: 5, name: 'Emma', age: 11} ]

方法二:按指定顺序生成数组(不受原数组顺序影响)

如果需要严格按照你指定的顺序返回结果,不管原数组中元素的位置,可以用Array.map()配合Array.find():

const mainArray = [
   {id: 1, name: 'John', age: 10},
   {id: 2, name: 'Mark', age: 14},
   {id: 3, name: 'Kevin', age: 15},
   {id: 4, name: 'Julie', age: 16},
   {id: 5, name: 'Liz', age: 10},
   {id: 5, name: 'Emma', age: 11},
   {id: 6, name: 'Robert', age: 13},
];

// 按你想要的顺序定义目标名字
const targetOrder = ['Mark', 'Kevin', 'Emma'];
// 按顺序查找并生成新数组
const specialKids = targetOrder.map(name => mainArray.find(item => item.name === name));

console.log(specialKids);
// 输出结果与需求完全匹配

额外提示

  • 若原数组中存在同名不同对象的情况,find()会返回第一个匹配的元素,filter()则会返回所有匹配元素;你的示例中目标名字唯一,两种方法都适用。
  • 当目标名字数量较多时,用Set存储目标名字可以提升查找效率:比如const targetNameSet = new Set(['Mark', 'Kevin', 'Emma']),筛选时用targetNameSet.has(item.name)即可。

内容的提问来源于stack exchange,提问作者Mohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:00:55