扁平化数组js

参考原文:https://www.cnblogs.com/w-yh/p/12053575.html

扁平化数组的意思就是将一个嵌套多层数组的,即多维数组转换为一维数组,如 [1,2,3,4, [3,4,[4,5]]] ----->[ 1, 2, 3, 4, 3, 4, 4, 5 ]

1、toString & split

调用数组的toString方法,将数组变为字符串,然后再用split分割还原为数组

因为split分割后形成的数组的每一项值为字符串,所以需要用一个map方法遍历数组将其每一项转换为数值型

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

2、 join & split

和toString一样,join也可以将数组转换为字符串

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

3、递归 递归的遍历每一项,若为数组则继续遍历,否则concat 


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

4、扩展运算符 es6的扩展运算符能将二维数组变为一维 


function flatten(arr) {
    while(arr.some(item=>Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}

5、 reduce方法 (介绍可以看原作者介绍^_^)


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

 看到的了解的暂时就这么多种啦,有其他的后续再添加

猜你喜欢

转载自blog.csdn.net/qq_39650208/article/details/108452364