Ayesha Malik
1 min readNov 21, 2022


Array.prototype.map returns a new array containing the results of calling a given function on every element of the calling array.

callbackFn: A function to execute for each element in the array. Its return value is added as a single element in the new array.

Pollyfill for map

* @callback callbackFn
* @param {object} [thisArg]
* @return {Array}
Array.prototype.myMap = function (callbackFn, thisArg) {
const len = this.length;
const array = new Array(len);

for (let k = 0; k < len; k++) {
// Ignore index if value is not defined for index (e.g. in sparse arrays).
if (Object.hasOwn(this, k)) {
array[k] = callbackFn.call(thisArg, this[k], k, this);

return array;
  • Passing the index and array to the map callback.
  • Calling the map callback with the correct this if thisArg is specified.
  • Sparse arrays (e.g. [1, 2, , 4]). The empty values should be ignored while traversing the array.
  • The thisArg doesn't do anything if the callback is defined as an arrow function as arrow functions don't have their own bindings to this.


Ayesha Malik

I’m a full-time software engineer who loves sharing knowledge to help others become better developers.