ES7
Array Includes
- 在ES7之前摘投,如果我們想判斷一個(gè)數(shù)組中是否包含某個(gè)元素煮寡,需要通過 indexOf 獲取結(jié)果,并且判斷是否為 -1犀呼。
-
在ES7中幸撕,我們可以通過includes來(lái)判斷一個(gè)數(shù)組中是否包含一個(gè)指定的元素,根據(jù)情況外臂,如果包含則返回 true坐儿,
否則返回false。
指數(shù)(乘方) exponentiation運(yùn)算符
- 在ES7之前,計(jì)算數(shù)字的乘方需要通過 Math.pow 方法來(lái)完成貌矿。
- 在ES7中炭菌,增加了
**
運(yùn)算符,可以對(duì)數(shù)字來(lái)計(jì)算乘方逛漫。
ES8
Object values
前我們可以通過 Object.keys 獲取一個(gè)對(duì)象所有的key黑低,在ES8中提供了 Object.values 來(lái)獲取所有的value值:
Object entries
通過Object.entries 可以獲取到一個(gè)數(shù)組,數(shù)組中會(huì)存放可枚舉屬性的鍵值對(duì)數(shù)組酌毡。
String Padding
某些字符串我們需要對(duì)其進(jìn)行前后的填充克握,來(lái)實(shí)現(xiàn)某種格式化效果,ES8中增加了 padStart 和 padEnd 方法枷踏,分
別是對(duì)字符串的首尾進(jìn)行填充的菩暗。
應(yīng)用場(chǎng)景:比如需要對(duì)身份證、銀行卡的前面位數(shù)進(jìn)行隱藏:
Trailing Commas
在函數(shù)定義和調(diào)用時(shí)多加一個(gè)逗號(hào):
ES9
ES10
flat() 和 flatMap()
flat() 方法會(huì)按照一個(gè)可指定的深度遞歸遍歷數(shù)組呕寝,并將所有元素與遍歷到的子數(shù)組中的元素合并為一個(gè)新數(shù)組返回勋眯。
flatMap() 方法首先使用映射函數(shù)映射每個(gè)元素,然后將結(jié)果壓縮成一個(gè)新數(shù)組下梢。flatmap()接收兩個(gè)參數(shù)callback,thisArg
callback
可以接受三個(gè)參數(shù)客蹋,currentValue
當(dāng)前正在數(shù)組中處理的元,index
數(shù)組中正在處理的當(dāng)前元素的索引。array
被調(diào)用的 map 數(shù)組
thisArg
為指定this對(duì)象
- 注意一:flatMap是先進(jìn)行map操作孽江,再做flat的操作讶坯;
- 注意二:flatMap中的flat相當(dāng)于深度為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]]
示例應(yīng)用
// 消除負(fù)數(shù)岗屏,將奇數(shù)變成偶數(shù)加一辆琅,偶數(shù)直接保留
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
應(yīng)用場(chǎng)景
將前端傳過來(lái)的參數(shù)轉(zhuǎn)換為一個(gè)對(duì)象
trimStart trimEnd
去除一個(gè)字符串首尾的空格,我們可以通過trim方法这刷,如果單獨(dú)去除前面或者后面呢婉烟?