如何根据给定的索引数组对JavaScript数组进行过滤
错误原因
你现有的写法存在两个核心问题:
filter回调的第一个参数是当前遍历的元素值,第二个参数才是你需要用到的元素索引,你当前的逻辑完全没有用到索引参数- 拿基础类型的元素值和引用类型的
[2,3]做全等比较,二者类型本身就不匹配,判断结果永远为false
实现方案
方案1:用filter实现(适合索引不连续的场景)
// 回调第二个参数index为当前元素的索引,判断是否在目标索引数组内即可 const res = arr.filter((_, index) => [2, 3].includes(index))
执行后得到的结果为[3, 4],符合需求。
方案2:用slice实现(适合连续索引场景,性能更高)
如果要取的索引是连续的,直接用slice方法更简洁高效,slice的第一个参数为起始索引(包含),第二个参数为结束索引(不包含):
const res = arr.slice(2, 4)
执行结果和filter方案一致。
内容的提问来源于stack exchange,提问作者user10842868
相关产品推荐
相关产品推荐

