开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天
ES10新增方法及属性
flat方法
flat方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
简单来说,就是用作帮我们的数组降维
例如:
let arr = [1, 2, [3, 4, [5, 6]], 7, 8]
一个嵌套了三层的数组,我们如何将其转换为一维数组呢?
以前的方法是通过递归将其一层层拆开,最终变为一维。
而在ES10中提供了flap方法后,我们就可以简单地实现这一步骤:
arr.flat(2);//括号内传入要降维的次数,我们这里是三维数组,就降维两次,如果不填,则默认为1
最后得到:[1, 2, 3, 4, 5, 6, 7, 8]
flatMap方法
flatMap()方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组
- flapMap先进行映射操作,再做flat操作
- flatMap中的flat相当于深度为1
例如:
let arr = [1,2,3]
arr.flatMap(item => {
return item+1;//第一个参数传入方法,可以对每个元素进行处理
});//[2, 3, 4],第二个参数还可以传入指定的this值
那么如何体现出其降维的效果呢?
let arr = ["hello everyone", "my name is hexiaoxing"]
我们要将上述数组中的每个单词单独提炼出来,形成["hello", "everyone", "my", "name", "is", "hexiaoxing"]
arr.flatMap(item => {
return item.split(" ");
})
如上分割处理后,返回的数组自动为一维形式,若用map遍历,则会为二维分割形式。
Object.fromEntries方法
当我们有一个entries数据,需要将其转换为对象形式时,我们以往的做法是将其遍历取出,再为对象进行赋值,而现在需要做的只是:
let entries = [["name", "hexiaoxing"], ["age", 18]]
Object.fromEntries(entries);//{"name": "hexiaoxing", "age": 18}
trimStart和trimEnd方法
以前我们的trim方法用于去除首尾空格,而ES10为我们再做了精细化,通过trimStart和trimEnd方法可以精准去除首部或尾部空格
Symbol的description属性
通过这个属性,我们可以获取到创建Symbol时传入的值
let s = Symbol("aaaa")
s.description;//"aaaa"