es10

发布时间 2023-11-27 16:55:48作者: 柯基与佩奇

1. Array.flat

有一个二维数组,想让他变成一维数组:

const arr = [1, 2, 3, [4, 5, 6]];

console.log(arr.flat()); // [ 1, 2, 3, 4, 5, 6 ]

还可以传参数,参数为降维的次数

const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9]]];

console.log(arr.flat(2))[(1, 2, 3, 4, 5, 6, 7, 8, 9)];

如果传的是一个无限大的数字,那么就实现了多维数组(无论几维)降为一维数组

const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]];

console.log(arr.flat(Infinity))[(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)];

2. Array.flatMap

现在给一个需求

let arr = ["科比 詹姆斯 安东尼", "利拉德 罗斯 麦科勒姆"];

将上面数组转为

["科比", "詹姆斯", "安东尼", "利拉德", "罗斯", "麦科勒姆"];

第一时间想到 map + flat

console.log(arr.map((x) => x.split(" ")).flat());
// [ '科比', '詹姆斯', '安东尼', '利拉德', '罗斯', '麦科勒姆' ]

flatMap 就是 flat + map,一个方法顶两个

console.log(arr.flatMap((x) => x.split(" ")));
// [ '科比', '詹姆斯', '安东尼', '利拉德', '罗斯', '麦科勒姆' ]

3. BigInt

BigInt 是 ES10 新加的一种 JavaScript 数据类型,用来表示表示大于  2^53 - 1  的整数,2^53 - 1 是 ES10 之前,JavaScript 所能表示最大的数字

const theBiggestInt = 9007199254740991n;

const alsoHuge = BigInt(9007199254740991);
// 9007199254740991n

const hugeString = BigInt("9007199254740991");
// 9007199254740991n

const hugeHex = BigInt("0x1fffffffffffff");
// 9007199254740991n

const hugeBin = BigInt(
  "0b11111111111111111111111111111111111111111111111111111"
);
// 9007199254740991n

既然是 JavaScript 新的数据类型,那 typeof 是?

const bigNum = BigInt(1728371927189372189739217);
console.log(typeof bigNum); // bigint

JavaScript 有多少种数据类型,8 种,把 ES6 的 Symbol 和 ES10 的 BigInt 也加上去 31. Object.fromEntries
前面 ES8 的 Object.entries 是把对象转成键值对数组,而 Object.fromEntries 则相反,是把键值对数组转为对象

const arr = [
  ["name", "柯基"],
  ["age", 22],
  ["gender", "男"],
];

console.log(Object.fromEntries(arr)); // { name: '柯基', age: 22, gender: '男' }

他还有一个用处,就是把 Map 转为对象

const map = new Map();
map.set("name", "柯基");
map.set("age", 22);
map.set("gender", "男");

console.log(map); // Map(3) { 'name' => '柯基', 'age' => 22, 'gender' => '男' }

const obj = Object.fromEntries(map);
console.log(obj); // { name: '柯基', age: 22, gender: '男' }

4. String.trimStart && String.trimEnd

都知道 JavaScript 有个 trim 方法,可以清除字符串首尾的空格

const str = "    柯基    ";
console.log(str.trim()); // '柯基'

// trimStart和trimEnd用来单独去除字符串的首和尾的空格;
const str = "    柯基    ";

// 去除首部空格
console.log(str.trimStart()); // '柯基   '
// 去除尾部空格
console.log(str.trimEnd()); // '   柯基'