forEach
Array.prototype.myforEach = function (fn) {
var arr = this,
length = arr.length,
newThis = arguments[1] || global;
for (var index = 0; index < length; index++) {
fn.apply(newThis, [arr[index], index, arr])
}
}
map
Array.prototype.myMap = function (fn) {
var arr = this,
length = arr.length,
newThis = arguments[1] || global;
newArr = [];
for (var index = 0; index < length; index++) {
newArr.push(fn.apply(newThis, [arr[index], index, arr]))
}
return newArr
}
filter
Array.prototype.myFilter = function (fn) {
var arr = this,
length = arr.length,
newThis = arguments[1] || global,
newArr = [];
for (var index = 0; index < length; index++) {
fn.apply(newThis, [arr[index], index, arr]) ? newArr.push(arr[index]) : null
}
return newArr
}
every
Array.prototype.myEvery = function (fn) {
var arr = this,
length = arr.length,
newThis = arguments[1] || global;
for (var index = 0; index < length; index++) {
if (!fn.apply(newThis, [arr[index], index, arr])) {
return false
}
}
return true
}
some
Array.prototype.mySome = function (fn) {
var arr = this,
length = arr.length,
newThis = arguments[1] || global;
for (var index = 0; index < length; index++) {
if (fn.apply(newThis, [arr[index], index, arr])) {
return true
}
}
return false
}
reduce
Array.prototype.myReduce = function (fn, initValue) {
var arr = this,
length = arr.length,
newThis = arguments[2] || global;
for (var index = 0; index < length; index++) {
initValue = fn.apply(newThis, [initValue, arr[index], index, arr])
}
return initValue
}
reduceRight
Array.prototype.myReduceRight = function (fn, initValue) {
var arr = this,
length = arr.length,
newThis = arguments[2] || global;
for (var index = length; index--;) {
initValue = fn.apply(newThis, [initValue, arr[index], index, arr])
}
return initValue
}