DEV Community

Cover image for JS Polyfills - Part 2 (forEach, keys, Values, Entries)
Sriya
Sriya

Posted on • Edited on

JS Polyfills - Part 2 (forEach, keys, Values, Entries)


Github Code: JS Polyfills
4. forEach()

  • Function: forEach(callback, thisArg)
  • Usage: arr.forEach((ele, index, arr)=>{...}, this)
  • Description: callback function will execute on every element. But not for uninitialized elements for sparse arrays.
  • Polyfill: forEach
//function returns undefined Function.prototype.customForEach = function (callback) { //this should point to array if(Array.isArray(this)) { for (let i = 0; i < this.length; i++) { //check if each element exists if(typeof this[i] !== 'undefined') { //callback will take element, index and array as parameters callback(this[i], i, this); } } } }; 
Enter fullscreen mode Exit fullscreen mode

5. Keys()

  • Function: keys(obj)
  • Usage: Obj.keys(anyobj)
  • Description: returns array iterator
  • Polyfill:Keys
//function returns Array Iterator Array.prototype.customKeys = function () { let keys = []; for (let i = 0; i < this.length; i++) { keys.push(i); } // A generator function which returns a generator object( basically follows iterator protocol) // Why we use here? because the keys return array iterator // A yield will pause and resume the function (Basically will return the keys one by one until done becomes true) function* iterator() { yield* keys; } return iterator(); }; 
Enter fullscreen mode Exit fullscreen mode

6. Values()

  • Function: values(obj)
  • Usage: Obj.values(anyobj)
  • Description: returns array iterator
  • Polyfill:Values
//function returns Array Iterator Array.prototype.customValues = function () { let values = []; for (let i = 0; i < this.length; i++) { values.push(this[i]); } // A generator function which returns a generator object( basically follows iterator protocol) // Why we use here? because the values return array iterator // A yield will pause and resume the function (Basically will return the values one by one until done becomes true) function* iterator() { yield* values; } return iterator(); }; 
Enter fullscreen mode Exit fullscreen mode

7. Entries()

  • Function: entries(obj)
  • Usage: Obj.entries(anyobj)
  • Description: returns array iterator
  • Polyfill:Entries
//function returns Array Iterator Array.prototype.customEntries = function () { let entries = []; for (let i = 0; i < this.length; i++) { entries.push(i, this[i]); } // A generator function which returns a generator object( basically follows iterator protocol) // Why we use here? because the entries return array iterator // A yield will pause and resume the function (Basically will return the entries one by one until done becomes true) function* iterator() { yield* entries; } return iterator(); }; 
Enter fullscreen mode Exit fullscreen mode

Stay Tuned for Part 3
Keep Learning!

Top comments (0)