1. 用es5实现map
Array.prototype.myMap = function(fn, context) {
var arr = Array.prototype.slice.call(this);
var tempArr = [];
for(var i = 0; i < arr.length; i++) {
tempArr.push(fn.call(context, arr[i], i, this));
}
return tempArr;
}
2. 用es5实现filter方法
Array.prototype.myFilter = function(fn, context) {
var arr = Array.prototype.slice.call(this);
var tempArr = [];
for (var i = 0; i < arr.length; i++) {
if (fn.call(context, arr[i], i, this)) {
tempArr.push(arr[i]);
}
}
return tempArr;
};
3. 用es5实现some方法
Array.prototype.mySome = function(fn, context) {
var arr = Array.prototype.slice.call(this);
var flag = false;
for (var i = 0; i < arr.length; i++) {
if (fn.call(context, arr[i], i, this)) {
flag = true;
break;
}
}
return flag;
};
4. 用es5实现every方法
Array.prototype.myEvery = function(fn, context) {
var arr = Array.prototype.slice.call(this);
var flag = true;
for (var i = 0; i < arr.length; i++) {
if (!fn.call(context, arr[i], i, this)) {
flag = false;
break;
}
}
return flag;
};
5. 用es5实现reduce方法
Array.prototype.myReduce = function(fn, initialValue) {
var arr = Array.prototpye.slice.call(this);
var res, startIndex;
res = initialValue ? initialValue : arr[0];
startIndex = initialValue ? 0 : 1;
for(var i = 0; i < arr.length; i++) {
res = fn.call(null, res, arr[i], i, this);
}
return res
}