一、ES7
(一) includes()
(替代indexof(), 判断是否有交集,返回值true/false)
例如:
const abilityIdList = this.product.packageAbilities.map(item => item.abilityId)
this.packageAbilities = this.abilityUpList.filter(item => abilityIdList.includes(item.abilityId)).map(item => item.name)
二、ES8
(一)Object.values()
- 意义:遍历对象对的属性值,需要通过属性名key去获取属性值
- 例如:
–>ES8前
let obj = { a = 1, b = 2, c = 3 };
Object.keys(obj).forEach((key) => {
console.log(obj[key]); // 输出1, 2, 3
});
–>ES8后
let obj = { a = 1, b = 2, c = 3 };
Object.values(obj).forEach((key) => {
console.log(obj); // 输出1, 2, 3
// 无需使用属性名
});
(二)Object.entries()
- 意义:遍历对象对的属性名和属性值
- 例如:
let obj = { a = 1, b = 2, c = 3 };
Object.entries(obj).forEach((c[key, value]) => {
console.log(key + ":" + value); // 输出a=1, b=2, c=3
});
(三)字符填充函数padStart、padEnd
- 意义:用在字符串开头或者结尾添加填充字符串
String.prototype.padStart(maxLength, [ , fillString]);
String.prototype.padEnd(maxLength, [ , fillString]);
注:
a. 第一个参数maxLength是目标长度
b. 第二参数[ , fillString]是填充字符串,默认是空格
例如:
console.log('es8'.padStart(6, 'woof')); // 输出wooes8
console.log('es8'.padEnd(6, 'woof')); // 输出es8woo
三 、ES10新增:BigInt 表示任意大的整数
BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值。
在对大整数执行数学运算时,以任意精度表示整数的能力尤为重要。
使用BigInt,整数溢出将不再是问题。
此外,可以安全地使用更加准确时间戳,大整数ID等,而无需使用变通方法。
BigInt目前是第3阶段提案, 一旦添加到规范中,它就是JS 第二个数字数据类型,也将是 JS 第8种基本数据类型:
要创建BigInt,只需在整数的末尾追加n即可。比较:
console.log(9007199254740995n); // → 9007199254740995n
console.log(9007199254740995); // → 9007199254740996
或者,可以调用BigInt()构造函数
BigInt("9007199254740995"); // → 9007199254740995n
// 注意最后一位的数字
9007199254740992 === 9007199254740993; // → true
console.log(9999999999999999); // → 10000000000000000