ES2019

245 阅读1分钟

ES2019

1、数组实例 flat() / flatMap()

当数组的成员还是数组,若想将其变成一维数组,则需将其 "拉平". 两个实例方法都是返回一个新的数组,不改变原数组。

  • flat(depth)

depth: number。 默认 1,即之展开一层;若想全部展开,直接用 Infinity

 let arr = [1, 3, [5, 7, ['a', 'b']]]
 let resultArr = arr.flat()
 console.log(arr)           // [1, 3, [5, 7, ['a', 'b']]]
 console.log(resultArr)     // [1, 3, 5, 7, ['a', 'b']]
 
 let resultArr2 - arr.flat(Infinity)
 console.log(resultArr2)   // [1, 3, 5, 7, "a", "b"]
  • flatMap(callback)

flatMap() 方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat() 方法。该方法返回一个新数组,不改变原数组。

let arr = [1, 3, 5, 7]
let resultArr = arr.flatMap((x) => [x * 2])
console.log(resultArr3)    // [2, 6, 10, 14]
  • map()
let arr_map = [1, 2, 3, 4]
let resultArr4 = arr_map.map(x => [x *2])
console.log(resultArr4);      // [[2], [4], [6], [8]]

Object.fromEntries

Object.fromEntriesObject.entries (点击参考) 的反向

const records = [['name', 'Tom'], ['age', 30]]
const records_obj = Object.fromEntries(records); // {'name': 'Tom', 'age': 30}

PS: Object.fromEntries chorome 目前还不支持。2019/03/25

String.prototype.{trimStart, trimEnd}

删除 开头/结尾 空格

const str = '  Hello javaScript!   '
console.log(str.length) // 22
console.log(str.trimStart()) // 'Hello javaScript!   '
console.log(str.trimStart().length) // 20
console.log(str.trimEnd()) // '  Hello javaScript!'
console.log(str.trimEnd().length) // 19

try / catch

回顾之前:

try {
  JSON.parse(text)
} catch (error) {
  console.log(error);  // ReferenceError: text is not defined
}

但有时候 error 是不需要使用, 可以不用写。

function fn(text) {
  try {
    JSON.parse(text)
    return true
  } catch {
    return false
  }
}

console.log(fn()) // false

不是很明白这个提案的意义,error 信息用不到,就直接忽略就可以了嘛