【ES10(2019)】Array扩展 flat / flatMap
Array.prototype.flat()
flat()
方法会按照一个可指定的深度
递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组
返回。
const arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat());
// [0, 1, 2, 3, 4]const arr2 = [0, 1, 2, [[[3, 4]]]];
console.log(arr2.flat(2));
// [0, 1, 2, [3, 4]]
语法:var newArray = arr.flat([depth])
- depth 可选参数,默认是1,如果想全部扁平可以传
Infinity
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]
flat()
方法会移除数组中的空项:
var arr4 = [1, 2, , 4, 5];
console.log(arr4.flat());
// [1, 2, 4, 5]
Array.prototype.flatMap()
flatMap()
方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map
连着深度值为1
的flat
几乎相同,但flatMap
通常在合并成一种方法的效率稍微高一些。
语法:
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {// return element for new_array
}[, thisArg])
- currentValue 当前正在数组中处理的元素
- index 可选的。数组中正在处理的当前元素的索引。
- array 可选的。被调用的 map 数组
- thisArg 可选的。执行 callback 函数时 使用的this 值。
var arr1 = [1, 2, 3, 4];arr1.map(x => [x * 2]);
// [[2], [4], [6], [8]]arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]// only one level is flattened
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]
场景:将几句话的数组拆分成单词数组
let arr1 = ["it's Sunny in", "", "California"];arr1.map(x => x.split(" "));
// [["it's","Sunny","in"],[""],["California"]]arr1.flatMap(x => x.split(" "));
// ["it's","Sunny","in", "", "California"]
【ES10(2019)】Array扩展 flat / flatMap相关推荐
- ES10:Object.fromEntries()、String.prototype.trim()、Array.prototype.flat()、Array.prototype.flatMap()
Object.fromEntries(iterable) 把键值对列表(二维数组)转换为一个对象,这个方法和 Object.entries() 相对 Object.fromEntries([['foo ...
- js实现数组降维算法[不准用Array.prototype.flat的api]
js实现数组降维算法[不准用Array.prototype.flat的api] // target要降维的元素,n降维阶数,newArr存储结果的新数组 function f(target, n = ...
- 数组的flat方法【Array.prototype.flat()】
数组的flat方法[Array.prototype.flat()] 一. 概念 flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回. 二 ...
- 【ES10(2019)】JSON扩展 superset / stringify() 增强能力
JSON superset 什么是 JSON 超集?,简而言之就是让 ECMAScript 兼容所有JSON支持的文本. ECMAScript 曾在标准 JSON.parse 部分阐明 JSON 确为 ...
- 【ES10(2019)】Symbol 扩展 Symbol.prototype.description
我们知道,Symbol 的描述只被存储在内部的 Description ,没有直接对外暴露,我们只有调用 Symbol 的toString()时才可以读取这个属性: const name = Symb ...
- 【ES10(2019)】String 扩展 trimStart / trimEnd
String.prototype.trimStart() trimStart()方法从字符串的开头删除空格,移除原字符串左端的连续空白符并返回一个新字符串,并不会直接修改原字符串本身.trimLeft ...
- Swfit Array 遍历 map flatMap filter reduce
官网文档:Apple Developer Documentation 常用属性和方法可查看官网文档. 一.遍历 这里主要记录下遍历方法. 使用for in 遍历 for item in arr {pr ...
- ES6方法 flat flatMap
flat 为了更好的渲染界面,我们会将数据整合成拥有一定层级的格式 const arr = [1, 2, [3, 4, 5, [6, 7, ["hello world"], 8], ...
- js Array扩展方法
Object.extend = function (destination, source) { /// <summary> /// 扩展对象方法 /// </su ...
最新文章
- 1亿参数4万样本BERT仍听不懂人话,我们离通用NLP能还有多远?
- 统计5分钟内Nginx访问量及平均相应时间
- 【Kotlin】扩展接收者 与 分发接收者 ( 类内部扩展用法 | 注意事项 | open 修饰扩展 )
- 基于MATLAB的TDOA算法的仿真
- windows环境下设置Redis自启动
- SAPSQL_IN_ITAB_ILLEGAL_OPTION dump
- Java同步锁——lock与synchronized 的区别【转】
- python标志变量_Python 中的 global 标识对变量作用域的影响
- 五分钟读懂UML类图(转)
- U盘怎么重装系统到电脑上
- c#基础系列2---深入理解 String
- 心情整天都在郁闷浮云往事如云烟,撕心裂肺:伤感心情日志
- 信创干部人事档案管理系统单机版 - 人力资源档案管理系统软件
- Python判断素数(质数)——循换结构、控制及else循环扩展模式的实践
- 1、Android概述
- Springboot游戏道具在线交易平台毕业设计源码171956
- Kettle--java代码组件实现密码加密(BCryptPasswordEncoder)
- ThreadLocal 简单了解
- 一个案例两种分析方法告诉你数据涨跌异动该如何处理?附送涨跌问题常见五种假设
- Win8.1打开电脑时提示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的解决方法