以下代码
function steamrollArray(arr) {
// I'm a steamroller, baby
return arr.flat();
}
steamrollArray([1, [2], [3, [[4]]]]);
返回
arr.flat
不是功能
我尝试了Firefox 和Chrome v67同样的结果也发生了。
怎么了?
答案
这flat
方法是尚未实现在常见的浏览器中(仅Chrome V69,Firefox Nightly和Opera 56)。这是一个实验功能。因此,您不能使用它然而。
您可能想拥有自己的flat
功能:
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)
);