x-note
Search…
ECMAScript 2019
以下新特性被加入 stage4
  • Object 的新 API
  • Array 的新 API
  • String 的新 API
  • JSON.stringify 对 unicode 字符集进行优化

Object 的新 API

Object.fromEntries(iterable)
1
obj = { abc: 1, def: 2, ghij: 3 };
2
res = Object.fromEntries(
3
Object.entries(obj)
4
.filter(([ key, val ]) => key.length === 3)
5
.map(([ key, val ]) => [ key, val * 2 ])
6
);
7
8
// res is { 'abc': 2, 'def': 4 }
Copied!

Array 的新 API

Array.prototype.flat(depth)
1
const array = [1, [2, [3]]];
2
array.flat();
3
// [1, 2, [3]]
4
5
array.flat(Infinity);
6
// [1, 2, 3]
Copied!
Array.prototype.flatMap(fn)
1
let arr1 = [1, 2, 3, 4];
2
arr1.flatMap(x => [x * 2]);
3
// [2, 4, 6, 8]
4
// only one level is flattened
5
arr1.flatMap(x => [[x * 2]]);
6
// [[2], [4], [6], [8]]
Copied!

String 的新 API

String.prototype.trimStart
1
console.log(' Hello world! '.trimStart());
2
// "Hello world! "
Copied!
String.prototype.trimEnd
1
console.log(' Hello world! '.trimEnd());
2
// " Hello world!"
Copied!

JSON.stringify 对 unicode 字符集进行优化

JSON.stringify 堆 no-bmp 字符的转义进行了优化
1
// Non-BMP characters still serialize to surrogate pairs.
2
JSON.stringify('𝌆')
3
// '"𝌆"'
4
JSON.stringify('\uD834\uDF06')
5
// '"𝌆"'
6
7
// Unpaired surrogate code units will serialize to escape sequences.
8
JSON.stringify('\uDF06\uD834')
9
// '"\\udf06\\ud834"'
10
JSON.stringify('\uDEAD')
11
// '"\\udead"'
Copied!
Last modified 3yr ago