Javascript 老生常谈 --- 拉平数组

1. 常规操作

function flatDeep(arr, container = []) {
    arr.forEach(item => {
        if(Array.isArray(item)){
            flatDeep(item, container);
        } else{ 
            container.push(item);
        }
    });
    return container;
}

2. 使用reduce

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

3. 使用ECMAScript 2019 中数组的flat 方法

Array.prototype.flat

  • 参数
    • depth (可选) 指定要提取嵌套数组的结构深度,默认为1.
 var arr1 = [1, 2, [3, 4]];
arr1.flat(); 
// [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]

//使用 Infinity,可展开任意深度的嵌套数组
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 本文参考Array - JavaScript | MDN数组的扩展 - ECMAScript 6入门 Array....
    双面小Q阅读 866评论 0 1
  • 数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 JavaScript...
    劼哥stone阅读 1,158评论 6 20
  • 摘要: 通过代码掌握数组方法。 原文:通过实现25个数组方法来理解及高效使用数组方法(长文,建议收藏) 译者:前端...
    Fundebug阅读 1,462评论 2 36
  • 仅为方便个人查询使用来源:http://es6.ruanyifeng.com/#docs/array 扩展运算符 ...
    zqyadam阅读 129评论 0 0