DEV Community

ZeeshanAli-0704
ZeeshanAli-0704

Posted on

Polyfills for .forEach(), .map(), .filter(), .reduce() in JavaScript

ForEach:

function print(i){
console.log(i)
}
const names = ["ali", "hamza", "jack"];
Array.prototype.myForEach = function(cb){
  console.log(this)
  for(let i=0; i<this.length; i++){
    cb(this[i])
  }
}

names.myForEach(print);
Enter fullscreen mode Exit fullscreen mode

Map:

function multiplier(element) {
  return element * 2
}

let arr = [1, 2, 3];

Array.prototype.myMap = function (cb) {
  let newarr = [];
  for (let i = 0; i < this.length; i++) {
    newarr.push(cb(this[i]))
  }
  return newarr
}

let result = arr.myMap(multiplier);
console.log(result)

Enter fullscreen mode Exit fullscreen mode

Filter

function filter(element) {
  return element > 1
}

let arr = [1, 2, 3];

Array.prototype.myFilter = function (cb) {
  let newarr = [];
  for (let i = 0; i < this.length; i++) {
    if(cb(this[i])){
      newarr.push(this[i])
    }

  }
  return newarr
}

let result = arr.myFilter(filter);
console.log(result)

Enter fullscreen mode Exit fullscreen mode

Reduce

function sum(accumulator, element) {
  return accumulator + element;
}

let arr = [1,1,1,1,1,1,1,1,1];

Array.prototype.myreduce = function (cb, initialValue) {
  let accumulator = initialValue ? initialValue : undefined;

  for(let i=0; i<this.length; i++){
    if(accumulator !== undefined){
      accumulator = cb(accumulator, this[i])
    }else{
      accumulator = this[i]
    }
  }

  return accumulator
}

let result = arr.myreduce(sum);
console.log(result)

let result2 = arr.myreduce(sum, 10);
console.log(result2)

Enter fullscreen mode Exit fullscreen mode

Top comments (0)