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

使用ES6筛选数组对象:根据指定名称数组过滤人员数据

用ES6语法筛选匹配指定name的人员对象

嘿,这事儿用ES6的数组方法就能轻松搞定!咱们直接上代码,再给你唠唠为啥这么写:

const persons = [{ name: "john", age: 23 }, { name: "lisa", age: 43 }, { name: "jim", age: 101 }, { name: "bob", age: 67 }];
const names = ["lisa", "bob"];

// 核心代码就这一行
const filteredPersons = persons.filter(person => names.includes(person.name));

console.log(filteredPersons);
// 输出结果正是你要的:[{ name: "lisa", age: 43 }, { name: "bob", age: 67 }]

为啥这么写?

  • filter()是ES6数组的迭代方法,它会遍历persons里的每一个对象,只有当回调函数返回true时,这个对象才会被保留到新的filteredPersons数组里。
  • includes()同样是ES6新增的数组方法,它能快速判断某个值是否存在于数组中——这里就是检查当前遍历到的person的name是不是在names数组里,是的话就返回true,留下这个对象。

进阶优化(数据量大时用)

如果你的names数组特别长,比如有成百上千个元素,那把它转成Set会更高效,因为Set的has()方法查找速度是O(1),比数组的includes()(O(n))快得多:

const nameSet = new Set(names);
const filteredPersons = persons.filter(person => nameSet.has(person.name));

这个写法同样是纯ES6语法,而且性能更好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:12:41