Skip to content

JavaScript Array.prototype.flat() 兼容性处理

Published: at 10:02 AMSuggest Changes

公司项目上线的时候,我写的一个功能在测试环境突然不能用了,吓得我赶紧看了一下客户用的什么浏览器,好家伙,是 Chrome65

翻出 MDN 文档查一下,Array.prototype.flat(),好家伙,IE 直接所有版本都不支持。

讲真,真的很怕客户用玄学浏览器,好在只有这个问题需要兼容。

Object.defineProperty(Array.prototype, 'flat', {
  value: function (depth = 1) {
    return this.reduce(function (flat, toFlatten) {
      return flat.concat(
        Array.isArray(toFlatten) && depth > 1
          ? toFlatten.flat(depth - 1)
          : toFlatten
      );
    }, []);
  },
});

console.log([1, [2], [3, [[4]]]].flat(2));

赶紧加个垫片压压惊。


Previous Post
Linux Screen 使用教程
Next Post
LeetCode 1744: 你能在你最喜欢的那天吃到你最喜欢的糖果吗?