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

JavaScript新手技术问询:如何根据布尔数组过滤字符串数组

问题解决:根据布尔数组过滤字符串数组

错误原因

你写的arr1.filter(item => arr2[item])逻辑有误:item是arr1里的字符串元素(比如"Apple"),用它作为索引访问arr2时,JavaScript无法将这些字符串转换为有效的数字索引,最终得到的是undefined,而undefined在布尔判断中等同于false,所以过滤结果为空。

解决方案

filter方法的回调函数支持第二个参数当前元素的索引(index),我们可以通过索引对应arr2里的布尔值来判断是否保留元素:

const arr1 = ["Apple", "Banana", "Orange"];
const arr2 = [false, true, false];
const filteredArr = arr1.filter((_, index) => arr2[index]);
console.log(filteredArr); // 输出: ["Banana"]

(这里用下划线_表示不需要用到的item参数,是JavaScript里的常见写法)

如果需要更灵活的处理,也可以用reduce实现:

const filteredArr = arr1.reduce((result, item, index) => {
  arr2[index] && result.push(item);
  return result;
}, []);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:45:41