在面试中我们常常会被问到如何用原生js实现拍平多维数组
let array = [1, [2], [3, [4, [5]]]]
function flat(arr) {
//在此处实现代码
}
console.log(flat(array)) //[1, 2, 3, 4, 5]
原始方法:
let array = [1, [2], [3, [4, [5]]]]
function flat() {
var flatArr = []
return function flatten(arr) {
for (let index = 0; index < arr.length; index++) {
Array.isArray(arr[index])
? flatten(arr[index])
: flatArr.push(arr[index])
}
return flatArr
}
}
console.log(flat()(array))
toString方法:
let array = [1, [2], [3, [4, [5]]]]
function flat(arr) {
return arr.toString().split(',').map(val => +val)
}
console.log(flat(array))
Reduce方法:
let array = [1, [2], [3, [4, [5]]]]
function flat(arr) {
return arr.reduce((pre, value) => {
return Array.isArray(value) ? [...pre, ...flat(value)] : [...pre, value]
}, [])
}
console.log(flat(array))