//forEach源码实现
Array.prototype.customeForEach = function (func, thisValue) {
var arr = this;
for (var i = 0; i < arr.length; i++) {
func.call(thisValue, arr[i], i, arr);
}
}
//some源码实现
Array.prototype.customeSome = function (func, thisValue) {
var arr = this;
var state = false;
for (var i = 0; i < arr.length; i++) {
var val = func.call(thisValue, arr[i], i, arr);
if (val) {
state = true;
break;
}
}
return state;
}
//reduce源码实现
Array.prototype.customeReduce = function (func, thisValue) {
var arr = this;
var total = thisValue ? thisValue : arr[0];
for (var i = thisValue ? 0 : 1; i < arr.length; i++) {
total = func(total, arr[i], i);
}
return total;
}
//filter源码实现
Array.prototype.customeFilter = function (func, thisValue) {
var arr = this;
var result=[];
for (var i = 0; i < arr.length; i++) {
var val = func.call(thisValue, arr[i], i, arr);
if(val){
result.push(arr[i])
}
}
return result;
}
//map源码实现
Array.prototype.customeMap=function(func, thisValue){
var arr = this;
var result=[];
for (var i = 0; i < arr.length; i++) {
var val = func.call(thisValue, arr[i], i, arr);
result.push(val);
}
return result;
}
//every源码实现
Array.prototype.customeEvery=function(func,thisValue){
var arr = this;
var state = true;
for (var i = 0; i < arr.length; i++) {
var val = func.call(thisValue, arr[i], i, arr);
if (!val) {
state = false;
break;
}
}
return state;
}
源码的学习对于提升js还是很重要的,我们不单单是要学会怎么用,还要搞清楚内部是如何实现,之前我对数组的这些方法也不是很清楚,只用到了其中的一部分,现在通过总结可以加深对他们的理解。