数组扁平化

123 阅读1分钟

将一个多维数组转为一维数组

[1,2,[3,4,[5]]] ----> [1,2,3,4,5]

1、reduce

function flatten(arr) {
    return arr.reduce((acc, cur) => {
        return acc.concat(Array.isArray(cur) ? flatten(cur) : cur)
    }, [])
}

2、join && split

function flatten(arr) {
    return arr.join(',').split(',').map(item => {
        return parseInt(item)
    })
}

3、toString && split

function flatten(arr) {
    return arr.toString().split(',').map(item => {
        return parseInt(item)
    })
}

4、递归

function flatten(arr) {
    let res = [];
    arr.map(item => {
        if (Array.isArray(item)) {
            res = res.concat(flatten(item));
        } else {
            res.push(item);
        }
    })
    return res;
}

5、扩展运算符

[].concat(...arr); // [1,2,3,4,5]
function flatten(arr) {
    while(arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr)
    }
}

6、flat

[1,2,[3,4,[5]]].flat(3); // [1,2,3,4,5]