forEach
Array.prototype.$forEach = function (fn) {
var _arr = this,
len = _arr.length,
ctx = arguments[1] || window,
item;
for (var i = 0; i < len; i ++) {
item = _arr[i];
fn.apply(ctx, [item, i, _arr]);
}
}
map
Array.prototype.$map = function (fn) {
var _arr = this,
len = _arr.length,
ctx = arguments[1] || window,
res = [],
item;
for (var i = 0; i < len; i ++) {
item = _arr[i];
res.push(fn.apply(ctx, [item, i, _arr]));
}
return res;
}
console.log([1, 2, 3].$map(item => item * 2));
filter
Array.prototype.$filter = function (fn) {
var _arr = this,
len = _arr.length,
ctx = arguments[1] || window,
res = [],
item;
for (var i = 0; i < len; i ++) {
item = _arr[i];
if (fn.apply(ctx, [item, i, _arr])) {
res.push(item);
}
}
return res;
}
some
Array.prototype.$some = function (fn) {
var _arr = this,
len = _arr.length,
ctx = arguments[1] || window,
item;
for (var i = 0; i < len; i ++) {
item = _arr[i];
if (fn.apply(ctx, [item, i, _arr])) {
return true;
}
}
return false;
}
every
Array.prototype.$every = function (fn) {
var _arr = this,
len = _arr.length,
ctx = arguments[1] || window,
item;
for (var i = 0; i < len; i ++) {
item = _arr[i];
if (!fn.apply(ctx, [item, i, _arr])) {
return false;
}
}
return true;
}
reduce
Array.prototype.$reduce = function (fn, initialVal) {
var _arr = this,
len = _arr.length,
ctx = arguments[2] || window,
item;
for (var i = 0; i < len; i ++) {
item = _arr[i];
initialVal = fn.apply(ctx, [initialVal, item, i, _arr]);
}
return initialVal;
}