js把二维数组转成一维数组
js把二维数组转成一维数组
js 把二维数组或者多维数组转成一维数组,我们首先想到的方法可能是使用递归或 reduce 来实现,具体方法分别是:
递归
var arr = [1, [2, [3, 4]]]
function flatten(arr) {
var result = []
for (var i = 0, len = arr.length; i < len; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]))
} else {
result.push(arr[i])
}
}
return result
}
console.log(flatten(arr))
reduce
var arr = [1, [2, [3, 4]]]
function flatten(arr) {
return arr.reduce(function (prev, next) {
return prev.concat(Array.isArray(next) ? flatten(next) : next)
}, [])
}
console.log(flatten(arr))
但是 es6 提供了一个新的更简单的方法 —— flat,它接收一个参数 depth,代表展开嵌套数组的深度,默认是 1。使用 flat 来实现上面的效果是:
let arr = [1, [2, 3, [4, 5]]] arr.flat(2)
这样是不是简单多了,而且也更好理解。