1. Array.flat方法

1.1 描述

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

不会改变原数组

1.2 语法

arr.flat(depth) // depth 默认值为1

参数:

  • depth可选。提取嵌套数组的结构深度,默认值为1

1.3 注意

  1. arr.flat()返回一个包含数组和其子数组所有元素的新数组。
  2. depth可以是任意值,但一般只有numberstring 类型的数值才会被接受,undefined则为默认值

2. Array.flat应用

2.1 示例

:输出的Array(3) = ['a', ['b'], 'c'],Array(1) = ['b']

const arr = [1, 2, ['a', ['b'], 'c']];
console.log(arr.flat()); // 输出 [1, 2, 'a', Array(1), 'c'] ———— depth 默认值为1
console.log(arr); // 输出 [1, 2, Array(3)]  ———— 不会改变原数组const arr = [1, 2, ['a', ['b'], 'c']];
console.log(arr.flat('abc'));  // 输出 [1, 2, Array(3)]console.log(arr.flat('2')); // 输出 [1, 2, 'a', 'b', 'c']console.log(arr.flat(undefined)); //  输出 [1, 2, 'a', Array(1), 'c']// 引用自MDN ———— 使用 Infinity,可展开任意深度的嵌套数组
const arr = [1, 2, ['a', ['b'], 'c']];
console.log(arr.flat(Infinity)); // 输出 [1, 2, 'a', 'b', 'c']

2.2 与其他方法连通提取嵌套数组对象的情况

/* 输出户主及子系姓名 */
const arr = [{id: 1,name: '张三',families: [{ id: 101, name: '张四' },{ id: 105, name: '张五' },],},{id: 2,name: '李四',families: [{ id: 101, name: '李五' },{ id: 105, name: '李六' },],},
];
const result = arr.map((o) => {let nameArr = [];nameArr.push(o.name);nameArr.push(o.families.map((o) => o.name));return nameArr;}).flat(2);
console.log(result); // 输出 ['张三', '张四', '张五', '李四', '李五', '李六']

上面有点强制嵌套了,其实可以不用,如下

const result = arr.map((o) => {return [o.name].concat(o.families.map((o) => o.name));
}); // 输出 ['张三', '张四', '张五', '李四', '李五', '李六']

Array.flat 还有诸多与其它方法联用的应用,熟悉它,相信你在逻辑处理过程中能够广泛应用到

每天温习一个JS方法之Array.flat方法 第六天相关推荐

  1. js常用方法之Array对象方法扩展

    趁着这段项目少,对Array零散的知识进行一下梳理和总结,以便下次使用,代码如下: 1 /** 2 * 数组通用扩展方法 3 * 4 * @author lixiangqian 20130419 5 ...

  2. JS:数组Array的方法(增删改查):push() 、pop() 、unshift()、 shift()、concat()、join()、reverse()、sort()

    push() 该方法可以向数组的末尾添加一个或多个元素. 可以将要添加的元素作为方法的参数传递,这样元素会自动添加到数组末尾. 该方法会将数组新的长度作为返回值返回. let arr = [" ...

  3. C#——String.IndexOf方法与Array.IndexOf方法的异同

    相同:返回值都为int类型,没找到返回值都为-1 (1)//IndexOf方法从左到右查找子串在母串中的索引值 String a = "abcdefg";             ...

  4. 前端百题斩【020】——竟然有五种方式实现flat方法

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第20斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. 20.1 ...

  5. 前端百题——竟然有五种方式实现flat方法

    1 背景 不知道老铁们有没有遇到过一道面试题:如何将一个多维数组展开成一个一维数组?当时我遇到的时候还不了解flat这个神奇的方法,用了最传统的解决方法进行解决. const flatten = ar ...

  6. ruby中、.reject_Ruby中带有示例的Array.reject方法

    ruby中..reject Ruby Array.reject方法 (Ruby Array.reject Method) In the last article, we have seen how w ...

  7. Array.of()方法

    Array.of()方法 Array.of()方法用于将一组值,转换为数组. Array.of(3, 11, 8) // [3,11,8] Array.of(3) // [3] Array.of(3) ...

  8. 数组(array)ES5方法

    Array是JavaScript的内置对象,同时也是一个构造函数,可以用它生成新的数组,用于在变量中存储多个值 var cars = ["Saab", "Volvo&qu ...

  9. ruby array_Ruby中带有示例的Array.keep_if方法

    ruby array Ruby Array.keep_if方法 (Ruby Array.keep_if Method) In the last articles, we have studied th ...

最新文章

  1. Node.js 究竟是什么?(zz)
  2. 通过简单的Spring方面摆脱null参数
  3. java传入数据库生成柱状图_Java读取数据库数据生成柱状图
  4. 南邮计算机科学与技术专业排名,南京邮电大学王牌专业有哪些
  5. Freeswitch配置:一台Freeswitch向另外一台Freeswitch转发视频会议命令
  6. 计算机英语拼读法,常用计算机英语词汇:DVD
  7. cad抠图 lisp_五个实用的AutoCAD的lisp程序
  8. 醒了自悟系列--千年老妖---1000后的重生---重新脚踏实地
  9. Doom3bfg 技术说明
  10. 「志强课堂」成功的微商是怎么做好推广引流的?
  11. React-Redux 中文文档
  12. Linux命令学习一
  13. 罗永浩2011年保利剧院演讲(一个理想主义者的创业故事II)
  14. Linux-C C语言编译过程
  15. 视频教程-PPT吸金大法 20+万年薪工作总结不用愁-Office/WPS
  16. my firefox常用的插件介绍
  17. 安静的程序,淘气的程序和编写程序
  18. 北京地铁线路中心计算机系统,北京地铁DT—1型计算机联锁系统
  19. 管理每日待办事项的日程安排APP有吗?
  20. 苹果官网对xcode版本的要求

热门文章

  1. 哈利波特与死圣中文版
  2. 在网页上实现大华视频监控摄像头在线
  3. C++容器方法大汇总
  4. 微信小程序-实现元素渐入渐出动画效果-封装方法
  5. 最新流行的网页网络游戏(九龙朝、傲剑、战千雄、诛神、传承)
  6. java利器下载_java利器app下载|
  7. 阿里大数据面试题集合:Hadoop+HBase+Spark+Zookeeper
  8. Metasploit联动CobaltStrike渗透win11主机并提权
  9. 宅基地一码溯源、一码统管
  10. prometheus监控服务器基本信息+华为交换机设备