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

如何用.filter()从对象数组提取hidden为false的名称数组?

问题解答

你的filter使用不正确

filter方法的回调函数需要返回布尔值(true/false),用来判断当前元素是否保留到结果数组。你当前的代码逻辑完全反了:

  • 当array.hidden为true时,返回array.name(字符串会被转为true),这会保留hidden: true的对象;
  • 当array.hidden为false时,回调函数无返回值(默认是undefined,转为false),反而会过滤掉你需要的元素。

正确实现方式

要得到仅含目标名称的数组,需要两步操作:

  1. 用filter筛选出hidden: false的对象;
  2. 用map提取每个对象的name属性。

完整代码:

const myArray = [
   {name: 'Bob', age: 22, hidden: false },
   {name: 'Jessica', age: 60, hidden: false },
   {name: 'Marley', age: 34, hidden: true },
   {name: 'Michella', age: 12, hidden: false },
   {name: 'Sam', age: 10, hidden: true }
];

const names = myArray
  .filter(item => !item.hidden) // 筛选隐藏状态为false的对象
  .map(item => item.name); // 提取名称

console.log(names); // 输出:['Bob', 'Jessica', 'Michella']

可选的一步式实现(用reduce)

如果想在一次遍历中完成,可以使用reduce方法:

const names = myArray.reduce((result, item) => {
  if (!item.hidden) {
    result.push(item.name);
  }
  return result;
}, []);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:10:35