title: ES10
categories: Javascript
tag:

  • es10
    date: 2021-11-29 12:16:34

flat

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

  1. const nums = [10, 20, 30, [40, 50, [60, 70]]]
  2. const newNum1 = nums.flat(1)
  3. console.log(newNum1) //[ 10, 20, 30, 40, 50, [ 60, 70 ] ]
  4. const newNum2 = nums.flat(2)
  5. console.log(newNum2) //[10, 20, 30, 40,50, 60, 70]

flatMap

flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。

  1. 注意一:flatMap 是先进行 map 操作,再做 flat 的操作;
  2. 注意二:flatMap 中的 flat 相当于深度为 1;
  1. const nums2 = [10, 20, 30]
  2. const newNum3 = nums2.flatMap((item) => {
  3. return item * 2
  4. })
  5. console.log(newNum3) //[ 20, 40, 60 ]

flatMap 的用法

  1. const nums2 = ['hello world', 'my name is dh']
  2. const newNum3 = nums2.map((item) => {
  3. return item.split(' ')
  4. })
  5. console.log(newNum3) //[ [ 'hello', 'world' ], [ 'my', 'name', 'is', 'dh' ] ]
  6. const newNum4 = nums2.flatMap((item) => {
  7. return item.split(' ')
  8. })
  9. console.log(newNum4) //[ 'hello', 'world', 'my', 'name', 'is', 'dh' ]

Object fromEntries

在前面,我们可以通过 Object.entries 将一个对象转换成 entries,那么如果我们有一个 entries 了,如何将其转换成对象呢?

ES10 提供了 Object.formEntries 来完成转换:

  1. const obj = {
  2. name: 'why',
  3. age: 18,
  4. height: 1.88
  5. }
  6. console.log(Object.entries(obj)) //[ [ 'name', 'why' ], [ 'age', 18 ], [ 'height', 1.88 ] ]
  7. const entries = Object.entries(obj)
  8. const info = Object.fromEntries(entries)
  9. console.log(info) //{ name: 'why', age: 18, height: 1.88 }

那么这个方法有什么应用场景呢?

  1. const paramsString = 'name=why&age=18&height=1.88'
  2. const searchParams = new URLSearchParams(paramsString)
  3. for (const params of searchParams) {
  4. console.log(params)
  5. }
  6. /**
  7. * [ 'name', 'why' ]
  8. [ 'age', '18' ]
  9. [ 'height', '1.88' ]
  10. */
  11. const info = Object.fromEntries(searchParams)
  12. console.log(info) //{ name: 'why', age: '18', height: '1.88' }

trimStart 和 trimEnd

  1. const message = ' dh '
  2. console.log(message.trim())
  3. console.log(message.trimStart())
  4. console.log(message.trimEnd())

Symbol description:已经讲过了

Optional catch binding:后面讲解 try cach 讲解