forEach

  1. Array.prototype.$forEach = function (fn) {
  2. var _arr = this,
  3. len = _arr.length,
  4. ctx = arguments[1] || window,
  5. item;
  6. for (var i = 0; i < len; i ++) {
  7. item = _arr[i];
  8. fn.apply(ctx, [item, i, _arr]);
  9. }
  10. }

map

  1. Array.prototype.$map = function (fn) {
  2. var _arr = this,
  3. len = _arr.length,
  4. ctx = arguments[1] || window,
  5. res = [],
  6. item;
  7. for (var i = 0; i < len; i ++) {
  8. item = _arr[i];
  9. res.push(fn.apply(ctx, [item, i, _arr]));
  10. }
  11. return res;
  12. }
  13. console.log([1, 2, 3].$map(item => item * 2));

filter

  1. Array.prototype.$filter = function (fn) {
  2. var _arr = this,
  3. len = _arr.length,
  4. ctx = arguments[1] || window,
  5. res = [],
  6. item;
  7. for (var i = 0; i < len; i ++) {
  8. item = _arr[i];
  9. if (fn.apply(ctx, [item, i, _arr])) {
  10. res.push(item);
  11. }
  12. }
  13. return res;
  14. }

some

  1. Array.prototype.$some = function (fn) {
  2. var _arr = this,
  3. len = _arr.length,
  4. ctx = arguments[1] || window,
  5. item;
  6. for (var i = 0; i < len; i ++) {
  7. item = _arr[i];
  8. if (fn.apply(ctx, [item, i, _arr])) {
  9. return true;
  10. }
  11. }
  12. return false;
  13. }

every

  1. Array.prototype.$every = function (fn) {
  2. var _arr = this,
  3. len = _arr.length,
  4. ctx = arguments[1] || window,
  5. item;
  6. for (var i = 0; i < len; i ++) {
  7. item = _arr[i];
  8. if (!fn.apply(ctx, [item, i, _arr])) {
  9. return false;
  10. }
  11. }
  12. return true;
  13. }

reduce

  1. Array.prototype.$reduce = function (fn, initialVal) {
  2. var _arr = this,
  3. len = _arr.length,
  4. ctx = arguments[2] || window,
  5. item;
  6. for (var i = 0; i < len; i ++) {
  7. item = _arr[i];
  8. initialVal = fn.apply(ctx, [initialVal, item, i, _arr]);
  9. }
  10. return initialVal;
  11. }