扁平化数组的几种方法

1.递归

function flat(arr){
    var res =[];
    for (var i=0;i<arr.length;i++){
        if (Array.isArray(arr[i])){
            res=res.concat(flat(arr[i]));
        }
        else{
            res.push(arr[i])
        }
    }
    return res
}

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

function flat(arr){
    return arr.reduce((pre, item) => {
        console.log(item);
        return pre.concat(Array.isArray(item) ? flat(item) : item);
    }, [])
}

test:


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,159评论 19 139
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,195评论 0 5
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 5,486评论 0 8
  • 大家好!我把昨天的分享整理成文字!尽量做到言简意赅!让大家在忙碌之余能有效的进行面部美容! 1.频率:一周2次最佳...
    鹭之阳阅读 1,859评论 0 0
  • 文/F孤 1 那是最美好的时代,那是最糟糕的时代。 居住在巴黎的年轻医生马奈特被侯爵兄弟强迫出诊。 在伯爵家里目睹...
    F孤阅读 7,636评论 2 0

友情链接更多精彩内容