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)
这样是不是简单多了,而且也更好理解。