# 🚀ES10
📅 2023/8/02
# flat()
flat(depth):创建一个新的数组,并根据指定深度递归地将所有子数组元素拼接到新的数组中。
- depth(可选):指定要提取嵌套数组的结构深度,默认值为 1。
- 返回值:一个新的数组,其中包含拼接后的子数组元素。
const arr1 = [1, 2, [3, 4]]
arr1.flat() // [1, 2, 3, 4]
const arr2 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]
arr2.flat(Infinity) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const arr3 = [1, , 3, ["a", , "c"]]
arr3.flat() // [ 1, 3, "a", "c" ]
const arrayLike = {
length: 3,
0: [1, 2],
// 嵌套的类数组对象不会被展平
1: { length: 2, 0: 3, 1: 4 },
2: 5,
}
Array.prototype.flat.call(arrayLike)
// [ 1, 2, { '0': 3, '1': 4, length: 2 }, 5 ]
# flatMap()
flatMap() 方法对数组中的每个元素应用给定的回调函数,然后将结果展开一级,返回一个新数组。它等价于在调用 map() 方法后再调用深度为 1 的 flat() 方法(arr.map(...args).flat())
# try catch
修改了try catch 的使用,catch不必再有入参
# trimStart, trimEnd
增加字符串的trimStart, trimEnd方法,分别是去掉首尾空格
# Object.fromEntries()
Object.fromEntries() 静态方法将键值对列表转换为一个对象。
//将 Map 转换成对象
const entries = new Map([
['foo', 'bar'],
['baz', 42]
])
const obj = Object.fromEntries(entries)
console.log(obj) //{ foo: "bar", baz: 42 }
//将 Array 转换成对象
const arr = [
["0", "a"],
["1", "b"],
["2", "c"],
]
const obj = Object.fromEntries(arr)
console.log(obj) // { 0: "a", 1: "b", 2: "c" }
//对象转换
const object1 = { a: 1, b: 2, c: 3 }
const object2 = Object.fromEntries(
Object.entries(object1).map(([key, val]) => [key, val * 2]),
)
console.log(object2) // { a: 2, b: 4, c: 6 }
# Function.prototype.toString()
toString() 方法返回一个表示当前函数源代码的字符串。也可以使用模板字符串实现
function sum(a, b) {
return a + b
}
console.log(sum.toString())
console.log(`${sum}`)
/*
输出:
function sum(a, b) {
return a + b
}
*/
# Symbol.prototype.description
description 是一个只读属性,它会返回 Symbol 对象的可选描述的字符串。
Symbol("desc").toString() // "Symbol(desc)"
Symbol("desc").description // "desc"
Symbol("").description // ""
Symbol().description // undefined
# JSON.superset、JSON.stringify
对JSON对象的优化:在ES10之前的版本中,不接受非转义的行分隔符U+2028和段落分隔符U+2029。格式良好的 JSON.stringify()。
← 🚀ES9 🚀Chrome扩展开发 →