js 数组扁平化,多维数组转换为一维数组

原始数组

let arr = [1, [2, [3, [4, 5]]], 6];

方法1: 利用 ES6 的 flat 方法

console.log(arr.flat(Infinity));

方法2: 递归方法

let result = []
function fn(arr) {
    for (var i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) {
            fn(arr[i])
        } else {
            result.push(arr[i])
        }
    }
}
fn(arr)
console.log(result)

方法3: ES6 扩展运算符

while (arr.some(Array.isArray)) {
    arr = [].concat(...arr)
}
console.log(arr)

方法4: reduce 方法

function fn(arr) {
    return arr.reduce((acc, cur) => {
        return acc.concat(Array.isArray(cur) ? fn(cur) : cur)
    }, [])
}
console.log(fn(arr))
Leave a Reply

Your email address will not be published. Required fields are marked *