ES6中冷门但非常实用的高级技巧

在现代JavaScript编程中,ES6(ECMAScript 2015)引入了许多令人兴奋的新功能和语法,其中一些可能相对较冷门,但却非常实用。本文将深入探讨一些不太为人熟知却极具实际价值的高级技巧,为你展示如何利用这些功能提高代码的可读性和效率。

1. Object.entries() 和 Object.fromEntries()

使用场景:
  • 对象转为数组: 当需要对对象的键值对进行遍历、过滤或其他数组操作时。
  • 数组转为对象: 当从数组形式的键值对中还原对象时。
示例代码:
// 对象转为数组
const myObject = { a: 1, b: 2, c: 3 };
const entriesArray = Object.entries(myObject);
console.log(entriesArray);
// 输出: [['a', 1], ['b', 2], ['c', 3]]

// 数组转为对象
const newObj = Object.fromEntries(entriesArray);
console.log(newObj);
// 输出: { a: 1, b: 2, c: 3 }

2. Symbol类型和Symbol属性

使用场景:
  • 创建唯一标识符: 当需要确保对象属性的唯一性时,使用Symbol作为属性名。
示例代码:
const mySymbol = Symbol('description');
const myObject = {
  [mySymbol]: 'This is a Symbol property'
};

console.log(myObject[mySymbol]);
// 输出: This is a Symbol property

3. WeakMap 和 WeakSet

使用场景:
  • 存储临时数据: 当需要存储对象且不希望阻止其被垃圾回收时。
示例代码:
let weakMap = new WeakMap();

const obj = {};
weakMap.set(obj, 'value');

console.log(weakMap.get(obj));
// 输出: value

4. Promise.allSettled()

使用场景:
  • 并行异步操作: 当需要等待一组Promise全部完成,而不受其中任何一个Promise的拒绝影响。
示例代码:
const promises = [
  Promise.resolve('Resolved'),
  Promise.reject('Rejected'),
  Promise.resolve('Another Resolved')
];

Promise.allSettled(promises)
  .then(results => console.log(results));
// 输出: [{status: "fulfilled", value: "Resolved"}, {status: "rejected", reason: "Rejected"}, {status: "fulfilled", value: "Another Resolved"}]

5. BigInt

使用场景:
  • 处理大数字: 当需要进行精确的大数计算时,避免JavaScript中整数范围的限制。
示例代码:
const bigNumber = 9007199254740991n + 1n;
console.log(bigNumber);
// 输出: 9007199254740992n

6. Array.of 和 Array.from

使用场景:
  • 创建数组: Array.of 用于创建具有可变参数的新数组。
  • 从类数组对象或可迭代对象创建数组: Array.from 用于将类数组对象或可迭代对象转换为数组。
示例代码:
// 创建数组
const newArray1 = Array.of(1, 2, 3);
console.log(newArray1);
// 输出: [1, 2, 3]

// 从类数组对象创建数组
const arrayLike = { length: 3, 0: 'a', 1: 'b', 2: 'c' };
const newArray2 = Array.from(arrayLike);
console.log(newArray2);
// 输出: ['a', 'b', 'c']

7. Array.prototype.at 和 Array.prototype.flat

使用场景:
  • 直接访问数组元素: Array.prototype.at 允许通过索引直接访问数组元素。
  • 嵌套数组扁平化: Array.prototype.flat 用于将嵌套数组扁平化。
示例代码:
// 直接访问数组元素
const myArray = ['a', 'b', 'c'];
console.log(myArray.at(1));
// 输出: b

// 嵌套数组扁平化
const nestedArray = [1, [2, 3], [4, [5, 6]]];
const flattenedArray = nestedArray.flat(2);
console.log(flattenedArray);
// 输出: [1, 2, 3, 4, 5, 6]

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋名山大前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值