方法一
新创建一个数组用来存储结果,利用forEach()循环数组,找出数组中与元素target相同的元素,将其位置push进结果数组。遍历数组还可用for和for...in。
function findAllOccurrences(arr, target) { let newArr = []; arr.forEach((el, index)=>{ // el == target && newArr.push(index); if(el == target){ newArr.push(index); } }) return newArr; }
方法二
利用map()+filter()实现,先用map()遍历数组输出一个结果数组,这个结果数组是原数组中元素对应的索引位置,与元素target相等的元素输出其对应索引,不等的元素输出-1;再用filter()输出结果数组中不为1的元素。
function findAllOccurrences(arr, target) { return arr.map((elem,index)=>elem===target ? index:-1).filter((e)=>e!==-1); }
方法三
新创建一个数组存储结果,利用arr.indexOf()或者lastIndexOf()来查找数组中与target相同的元素,利用while循环来判断是否找到相同的元素,找到就将其位置push进结果数组,并将搜索位置+1,继续往下搜索。 indexOf(item, stratIndex):查找元素第一次出现的位置,找到元素位置,否则返回-1,第二个参数可以指定开始搜索的位置。
function findAllOccurrences(arr, target) { var Arr = []; index = arr.indexOf(target); while(index>-1){ Arr.push(index); index = arr.indexOf(target,index+1); } return Arr; }