ES6的一些实用技巧

Object.entries()和Object.fromEntries()

  • Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组。

// 当使用Object.entries()时,可以传入一个对象作为参数。
// 这个对象可以是任何具有可枚举属性的对象。
const obj = {a:1, b:2, c:3}
const entries = Object.entries(obj)
console.log(entries) // [['a', 1], ['b', 2], ['c', 3]]
  • Object.fromEntries()方法将键值对列表转换为一个对象。

// 当使用Object.fromEntries()时,可以传入一个键值对数组作为参数。
// 这个数组中的每个元素都是一个包含键和值的数组。
const entries = [['a', 1], ['b', 2], ['c', 3]]
const obj = Object.fromEntries(entries)
console.log(obj) // {a: 1, b: 2, c: 3}

  Symbol类型和Symbol属性

  • Symbol是一种新的原始数据类型,用于创建唯一的标识符。

  • Symbol属性是对象中使用Symbol作为键创建的属性。

const sym = Symbol('description');

const obj = {
  [sym]: 'value'
};

console.log(obj[sym]); // value

WeakMap和WeakSet

  • WeakMap是一种集合类型,其中键必须是对象,并且在没有其他引用时会被垃圾回收。

  • WeakSet是一种集合类型,其中元素必须是对象,并且在没有其他引用时会被垃圾回收。

// 创建了一个WeakMap 实例
const wm = new WeakMap();

const obj = {};

wm.set(obj, 'value');

console.log(wm.get(obj)); // value

// 创建了一个WeakSet实例
const ws = new WeakSet();

ws.add(obj);

console.log(ws.has(obj)); // true

Promise.allSettled()

  • Promise.allSettled()方法返回一个在所有给定的promise已被解析或被拒绝后决议的promise,并带有一个对象数组,每个对象表示对应的promise结果。

const promises = [
  Promise.resolve('resolved'),
  Promise.reject('rejected'),
  Promise.resolve('resolved')
];

Promise.allSettled(promises)
  .then(results => {
    console.log(results);
  })
  .catch(error => {
    console.error(error);
  });

 // 输出结果:
 // [
 //  { status: 'fulfilled', value: 'resolved' },
 //  { status: 'rejected', reason: 'rejected' },
 //  { status: 'fulfilled', value: 'resolved' }
 // ]

BigInt

  • BigInt是一种新的原始数据类型,用于表示任意精度的整数。

const bigIntValue = BigInt(Number.MAX_SAFE_INTEGER) + BigInt(1);
console.log(bigIntValue); // 9007199254740992n

Array.of、Array.from

  • Array.of()方法创建一个具有可变数量参数的新数组实例。

  • Array.of方法用于创建一个由参数组成的新数组。它与Array构造函数不同之处在于,当参数只有一个且为数字时,Array.of会创建一个只包含该数字的数组,而不是创建指定长度的空数组。

  • Array.from()方法从类似数组或可迭代对象创建一个新的数组实例。

  • Array.from方法将类似数组或可迭代对象转换为真正的数组。它可以接收第二个参数来进行映射或筛选操作。

const arr1 = Array.of(1, 2, 3);
console.log(arr1); // [1, 2, 3]

const str = 'Hello';
const arr = Array.from(str);
console.log(arr); // 输出: ['H', 'e', 'l', 'l', 'o']

const nums = [1, 2, 3, 4, 5];
const doubled = Array.from(nums, num => num * 2);
console.log(doubled); // 输出: [2, 4, 6, 8, 10]

.at和flat

  • .at()方法返回指定索引处的元素。

  • .at方法用于获取数组指定索引位置的元素,支持负数索引。

  • flat()方法将嵌套的数组扁平化为一个新的数组。

  • flat方法用于将多维数组扁平化为一维数组,可以指定扁平化的层数。

const arr3 = [1, 2, 3, 4, 5];
console.log(arr3.at(2)); // 3

const arr4 = [1, [2, [3]]];
console.log(arr4.flat()); // [1, 2, [3]]

实用场景

1、Object.entries()Object.fromEntries()可以方便地在对象和键值对之间进行转换。

2、Symbol类型和Symbol属性可以创建唯一的标识符。

3、WeakMapWeakSet提供了一种在没有其他引用时自动垃圾回收的集合类型。

4、Promise.allSettled()可以处理多个promise并返回所有结果。

5、BigInt允许表示任意精度的整数。

6、Array.ofArray.from.atflat提供了更方便的数组操作方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值