二十三、ES10 新特性

郁子大约 1 分钟约 378 字笔记ECMAScript尚硅谷李强

(一)对象方法扩展 —— Object.fromEntries()

  • 创建一个对象,方法参数可以是一个二维数组,也可以是一个 Map 对象

1.二维数组

const res1 = Object.fromEntries([
  ["name", "ikuko"],
  ["skill", "前端, PHP"],
]);
console.log(res1);
// {name: 'ikuko', skill: '前端, PHP'}

2.Map 对象

const m = new Map();
m.set("name", "ikuko");

// 数组转为对象
const res2 = Object.fromEntries(m);
console.log(res2);
// {}
// {name: 'ikuko'}

// 对象转为数组(ES8)
const arr = Object.entries({
  name: "ikuko",
});
console.log(arr);
// [Array(2)]
// 0: (2) ['name', 'ikuko']

(二)字符串方法扩展

  • ES5: trim()

1.trimStart()

  • 清除字符串左侧空白。
let str = "    iLoveU   ";
console.log(str);
console.log(str.trimStart());
//     iLoveU
// iLoveU

2.trimEnd()

  • 清除字符串右侧空白
let str = "    iLoveU   ";
console.log(str);
console.log(str.trimEnd());
//     iLoveU   //
//     iLoveU//

(三)数组方法扩展

1.flat()

  • 降低多维数组的维度
    • 参数为数字,表示深度
    • 默认参数为 1
const arr1 = [1, 2, 3, 4, [5, 6]];
console.log(arr1.flat());
// (6) [1, 2, 3, 4, 5, 6]

const arr2 = [1, 2, 3, 4, [5, 6, [7, 8, 9]]];
console.log(arr2.flat());
// (7) [1, 2, 3, 4, 5, 6, Array(3)]
console.log(arr2.flat(2));
// (9) [1, 2, 3, 4, 5, 6, 7, 8, 9]

2.flatMap()

  • 降低多维 Map 的维度
  • 相当于两个操作 flat() + map()
const arr3 = [1, 2, 3, 4];
const res3 = arr3.map((item) => item * 10);
console.log(res3);
// (4) [10, 20, 30, 40]

const res4 = arr3.map((item) => [item * 10]);
console.log(res4);
// (4) [Array(1), Array(1), Array(1), Array(1)]

const res5 = arr3.flatMap((item) => [item * 10]);
console.log(res5);
// (4) [10, 20, 30, 40]

(四)Symbol 属性扩展 —— Symbol.prototype.description

  • 获取 Symbol 的描述字符串
// 创建Symbol
let s = Symbol("ikuko");
console.log(s.description);
// ikuko
上次编辑于: