ES7
Array Includes
- 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1。
-
在ES7中,我们可以通过includes来判断一个数组中是否包含一个指定的元素,根据情况,如果包含则返回 true,
否则返回false。
指数(乘方) exponentiation运算符
- 在ES7之前,计算数字的乘方需要通过 Math.pow 方法来完成。
- 在ES7中,增加了
**
运算符,可以对数字来计算乘方。
ES8
Object values
前我们可以通过 Object.keys 获取一个对象所有的key,在ES8中提供了 Object.values 来获取所有的value值:
Object entries
通过Object.entries 可以获取到一个数组,数组中会存放可枚举属性的键值对数组。
String Padding
某些字符串我们需要对其进行前后的填充,来实现某种格式化效果,ES8中增加了 padStart 和 padEnd 方法,分
别是对字符串的首尾进行填充的。
应用场景:比如需要对身份证、银行卡的前面位数进行隐藏:
Trailing Commas
在函数定义和调用时多加一个逗号:
ES9
ES10
flat() 和 flatMap()
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。flatmap()接收两个参数callback,thisArg
callback
可以接受三个参数,currentValue
当前正在数组中处理的元,index
数组中正在处理的当前元素的索引。array
被调用的 map 数组
thisArg
为指定this对象
- 注意一:flatMap是先进行map操作,再做flat的操作;
- 注意二:flatMap中的flat相当于深度为1;
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 a = [5, 4, -3, 20, 17, -33, -4, 18]
// |\ \ x | | \ x x |
// [4,1, 4, 20, 16, 1, 18]
a.flatMap( (n) =>
(n < 0) ? [] :
(n % 2 == 0) ? [n] :
[n-1, 1]
)
// expected output: [4, 1, 4, 20, 16, 1, 18]
Object fromEntries
应用场景
将前端传过来的参数转换为一个对象
trimStart trimEnd
去除一个字符串首尾的空格,我们可以通过trim方法,如果单独去除前面或者后面呢?