-
1、找出元素 item 在给定数组 arr 中的位置
方法一:直接用数组原型上的indexOf(item)方法,它直接返回的的就是item在数组中的位置,不存在返回-1;(确保万无一失的情况下先判断当前浏览器是否支持该方法Array.prototype.indexOf)
方法二:for循环遍历数组,找item的位置
注意:forEach()循环遍历可能会在浏览器上出现找到相应值之后不走return,而是继续遍历 -
2、计算给定数组 arr 中所有元素的总和
方法一:用eval() return eval(arr.join("+"));非常方便
方法二:常规循环遍历数组元素相加,for或者forEach都行;
方法三:函数式编程map-reduce
return arr.reduce(function(prev, curr){
return prev + curr;
});
方法四:不考虑算法复杂度,用递归
function sum(arr) {
var len = arr.length;
if(len == 0){
return 0;
} else if (len == 1){
return arr[0];
} else {
return arr[0] + sum(arr.slice(1));
}
}
- 3、移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
方法一:push
function remove(arr, item) {
var res=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!=item){
res.push(arr[i]);
}
}
return res
}
方法二:splice()
splice(index,len,[item]) 注释:该方法会改变原始数组。
splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值
index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空
unshift():在数组开头添加元素;
pop():在数组末尾删除元素;
shift():在数组开头移除元素;
function remove(arr,item){
var newarr = arr.slice(0);//复制一个新的arr数组(确保不改变原数组)
for(var i=0;i<newarr.length;i++){
if(newarr[i] == item){
newarr.splice(i,1);//因为splice删除一个数组项后,后面的项会提前一位
i--;
}
}
return newarr;
}
方法三:Array.prototype.filter()
function remove(arr,item){
return arr.filter(function(ele){
return ele != item;
})
}