//第一种方法:filter function findAllOccurrences(arr, target) { var result = []; arr.filter(function (item,index) { return item===target && result.push(index); }); return result; }
//第二种方法:forEach function findAllOccurrences1(arr, target) { var result = []; arr.forEach(function (item,index) { if (item===target) { result.push(index); } }); return result; }
//第三种方法 function findAllOccurrences3(arr, target) { var result = []; //获取查找元素在数组中的最后一个索引 var index = arr.lastIndexOf(target); //如果这个索引存在,则将其索引放入结果数组中,并且删除该索引位置的元素,继续遍历数组,直到数组中不再存在这个元素 while(index > -1) { result.push(index); arr.splice(index,1); index = arr.lastIndexOf(target); } return result; }
一些函数的总结:
//splice :增加或者删除元素,参数为0时是增加,参数为1时是替换,参数大于1时是删除 //slice:选取数组中元素,当为一个参数时,选取的元素从这个参数到数组末尾;两个参数时则选取的元素从起始参数到结束参数 //split:分割数组,当只有一个参数时,从该参数分割数组,若有两个参数,则从第一个参数位置分割相应的个数 //filter:过滤数组,参数包括(当前值,当前索引,当前数组,给该数组设置的初始值) //foreach:参数包括(当前值,当前索引,当前数组,给该数组设置的初始值) //eval:计算某个字符串 参数为所要计算的字符串 //reduce:计算元素相加后总和 参数包括(初始参数,当前值,当前索引,当前数组,初始参数值)