Javascript 多维数组展开

当数组只有2层时

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

这里可以使用 concat

function flatten2d(arr) {
    var result = [];
    for(var i = 0;i<arr.length;i++) {
        result = result.concat(arr[i]);
    }
}

在优化一步 使用apply(context , [arguments])

function flatten2d(arr) {
    return Array.prototype.concat.apply([],arr);
}

当数组有多维时,使用递归

function flattenMd(arr) {
    var result = [];
    for(var i = 0; i<arr.length;i++){
        if(arr[i] instanceof Array) {
            result = result.concat(flattenMd(arr[i]));
        }else{
            result.push(arr[i]);
        }
    }
    return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 首发于:segmentfault《JavaScript语言精粹 修订版》 读书笔记 之前看到这篇文章,前端网老姚浅...
    若川i阅读 4,334评论 0 3
  • 新三板从2012年及之前的默默无名,到2013年的崭露头角,到2014年开始频繁地见诸报端媒体,新三板到底是个啥,...
    三板好市场阅读 4,699评论 0 2
  • nasm用在mac平台的汇编开发。 安装 编译指令 −f 指定编译类型,mac下指定macho64格式。<fil...
    labi3285阅读 4,731评论 0 0