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); } } } };
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(); };
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(); };
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(); };
Stay Tuned for Part 3
Keep Learning!
Top comments (0)