扁平化数组的几种方法

1.递归

function flat(arr){
    var res =[];
    for (var i=0;i

test:

2.toString

如果数组的元素都是数字,那么我们可以考虑使用 toString 方法,因为: toString会将数组中的数以逗号形式结合起来。

[1,2,[3,4,[5,6]],8].toString()
"1,2,3,4,5,6,8"

so...

function flat(arr) {
    return arr.toString().split(",").map((item) => {
        return +item
    });
}

test:

flat(arr)
[1, 2, 3, 4, 5, 6, 8]

3.reduce

扁平化数组的几种方法_第1张图片
function flat(arr){
    return arr.reduce((pre, item) => {
        console.log(item);
        return pre.concat(Array.isArray(item) ? flat(item) : item);
    }, [])
}

test:


扁平化数组的几种方法_第2张图片

4.es6

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

由于扩展运算符一次只能展开一层数组:

var arr = [1, [2, [3, 4]]];
console.log([].concat(...arr)); // [1, 2, [3, 4]]

因此考虑只要数组中还有数组,就使用扩展运算符展开一次。
参考文档:
http://blog.csdn.net/crystal6918/article/details/77130948

你可能感兴趣的:(扁平化数组的几种方法)