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)

这样是不是简单多了,而且也更好理解。

亲自试一试