27 lines
669 B
JavaScript
27 lines
669 B
JavaScript
// Array.flat needs polyfilled in < Node 11
|
|
if (!Array.prototype.flat) {
|
|
Object.defineProperty(Array.prototype, "flat", {
|
|
configurable: true,
|
|
value: function flat() {
|
|
var depth = isNaN(arguments[0]) ? 1 : Number(arguments[0])
|
|
|
|
return depth
|
|
? Array.prototype.reduce.call(
|
|
this,
|
|
function(acc, cur) {
|
|
if (Array.isArray(cur)) {
|
|
acc.push.apply(acc, flat.call(cur, depth - 1))
|
|
} else {
|
|
acc.push(cur)
|
|
}
|
|
|
|
return acc
|
|
},
|
|
[]
|
|
)
|
|
: Array.prototype.slice.call(this)
|
|
},
|
|
writable: true,
|
|
})
|
|
}
|