公司项目上线的时候,我写的一个功能在测试环境突然不能用了,吓得我赶紧看了一下客户用的什么浏览器,好家伙,是 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));
赶紧加个垫片压压惊。