DEV Community

Cover image for Javascript Polyfill Array.flat #5
chandra penugonda
chandra penugonda

Posted on • Edited on

Javascript Polyfill Array.flat #5

This problem was asked by Meta

What is a polyfill ?

In web development, a polyfill is code that implements a feature on web browsers that do not natively support the feature

Please implement your own Array.prototype.flat()

Example

const arr = [1, [2], [3, [4]]];
flat(arr) // [1, 2, 3, [4]]
flat(arr, 1) // [1, 2, 3, [4]]
flat(arr, 2) // [1, 2, 3, 4]
Enter fullscreen mode Exit fullscreen mode

Follow up: Are you able to solve it both recursively and iteratively?

Solution

Recursion implementation

if (!Array.prototype.flat) {
  Array.prototype.flat = function (depth = Infinity) {
    const result = [];
    function flatten(arr, currentdepth) {
      for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i]) && currentdepth < depth) {
          flatten(arr[i], currentdepth + 1);
        } else {
          result.push(arr[i]);
        }
      }
    }
    flatten(this, 0);
    return result;
  };
}
Enter fullscreen mode Exit fullscreen mode

Iterative implementation

if (!Array.prototype.customFlat) {
  Array.prototype.customFlat = function (depth = Infinity) {
    const arr = [...this];
    const result = [];
    while (arr.length) {
      const current = arr.shift();
      if (Array.isArray(current) && depth > 0) {
        --depth;
        arr.unshift(...current);
      } else {
        result.push(current);
      }
    }
    return result;
  };
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)