查找元素位置 经典例题
输入:['a','b','c','d','e','f','a','b','c'] 'a'
输出:[0, 6] // ‘a’ 所在的索引位置
function findAllOccurrences(arr, target) {
return arr.reduce((r, o, i) => {
if (o === target) {
r.push(i);
}
return r;
}, [])
}
在 reduce()
方法中的 (r, o, i)
是一个回调函数,它接收三个参数:
r
:累加器(初始值为空数组 [])o
:当前元素(数组中的当前元素)i
:当前元素的索引
回调函数的作用是检查当前元素是否与目标元素相等,如果相等,则将当前元素的索引添加到累加器中,然后将累加器返回,以便在下一次迭代中继续使用。
最终,reduce()
方法将返回一个包含所有目标元素出现位置的数组。
所以最终返回的 r 为 [0,6], 因为 当o==='a' 时,索引为i,r.push(i).