2018.2.27 JavaScript数组方法应用

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)
原文地址:https://www.cnblogs.com/qichunlin/p/8480360.html