JavaScript数组方法应用
1.找出元素item在给定数组arr中的位置
function indexOf(arr,item){
return arr.indexOf(item);
}
function indexOf(arr,item){
var index = -1;
arr.forEach(function(res,i)){
if(res === item && index === -1){
index = i;
}
});
return index;
}
function indexOf(arr,item){
if(Array.prototype.indexOf){
return arr.indexOf(item);
}else{
for(var i = 0; i<arr.length;i++){
if(arr[i] === item){
return i;
}
}
}
return -1;
}
function indexOf(arr,item){
var len = arr.length;
for(var i = 0;i < len;i++){
if(arr[i] == item){
return i;
}
}
return -1;
}
2.计算数组arr中所有元素的总和
//不考虑算法复杂度,用递归
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));
}
}
//常规循环
function sum(arr){
var s = 0;
for(var i = arr.length-1;i>=0;i--){
s+=arr[i];
}
return s;
}
//函数式编程map-reduce
function sum(arr){
return arr.reduce(function(prev,curr,idx,arr)
return prev +curr;
});
}
//forEach遍历
function sum(arr){
var s = 0;
arr.forEach(function(val,idx,arr)){
s += val;
},0);
return s;
};
//eval
function sum(arr){
return eval(arr.join("+"));
};
3.移除数组arr中的所有值与item相等的元素。不要直接修改数组arr,结果返回新的数组
//1.splice()
function remove(arr,item){
var newarr = arr.slice(0);
for(var i = 0;i<newarr.length;i++){
if(newarr[i] == item){
newarr.splice(i,1);
i--;
}
}
return newarr;
}
//2.push()
function remove(arr,item){
var newarr = [];
for(var i = 0;i<arr.length;i++){
if(arr[i] !=item){
newarr.push(arr[i]);
}
}
return newarr;
}
//3.Array y.protototype.filter()
function remove(arr,item)