forEach方法
Array.prototype.myForEach = function (cb) {
var _arr = this;
var _len = _arr.length;
var _arg2 = arguments[1] || window;
for (var i = 1; i < _len; i++) {
cb.apply(_arg2, [_arr[i], i, _arr]);
}
}
map方法
Array.prototype.myMap = function (cb) {
var _arr = this;
var _len = arr.length;
var _arg2 = arguments[1] || window;
var _item;
var _res;
for (var i = 0; i < _len; i++) {
_item = deepClone(_arr[i]);
_res = cb.apply(_arg2, [_len, i, _arr]);
_res && _newArr.push(_res);
}
return _newArr;
}
filter方法
Array.prototype.myFilter = function (cb) {
var _arr = this;
var _len = _arr.length;
var _arg2 = arguments[1] || window;
var _newArr = [];
var _item;
for (var i = 0; i < _len; i++) {
_item = deepClone(_arr[i]);
cb.apply(_arg2, [_item, i, _arr]) ? _newArr.push(_item) : "";
}
return _newArr;
}
every方法
Array.prototype.myEvery = function (cb) {
var _arr = this;
var _len = _arr.length;
var arg2 = arguments[1] || window;
var _res = true;
for (var i = 0; i < _len; i++) {
if (!cb.apply(arg2, [_arr[i], i, _arr])) {
_res = false;
break;
}
}
return _res;
}
some方法
Array.prototype.myMap = function (cb) {
var _arr = this;
var _len = _arr.length;
var arg2 = arguments[1] || window;
var _res = false;
for (var i = 0; i < _len; i++) {
if (cb.apply(_arg2, [_arr[i], i, _arr])) {
_res = true;
break;
}
}
return _res;
}
reduce方法
Array.prototype.myReduce = function (cb, initialValue) {
var _arr = this;
var _len = _arr.length;
var _arg3 = arguments[2] || window;
var _item;
for (var i = 0; i < _len; i++) {
_item = deepClone(_arr[i]);
initialValue = cb.apply(_arg3, [initialValue, _item, _arr]);
}
return initialValue;
}
reduceRight方法
Array.prototype.myReduceRight = function (cb, initialValue) {
var _arr = this;
var _len = _arr.length;
var _arg3 = arguments[2] || window;
var _item;
for (var i = _len; i >= 0; i--) {
_item = deepClone(_arr[i]);
initialValue = cb.apply(_arg3, [initialValue, _item, i, _arr]);
}
return initialValue;
}