使用 ES10 的 Object.fromEntries() 实现 Map 和 Set 类型的转换

在前端开发中,我们经常会用到 Map 和 Set 这两种数据结构。Map 是一种键值对的集合,而 Set 是一种无序的、唯一的值的集合。在某些情况下,我们需要将 Map 或 Set 转换成普通的对象,或者将普通的对象转换成 Map 或 Set。

在 ES10 中,新增了一个 Object.fromEntries() 方法,它可以将一个由键值对组成的数组转换成一个对象。利用这个方法,我们可以很方便地实现 Map 和 Set 类型的转换。

将 Map 转换成普通对象

假设我们有一个 Map,它的键是字符串类型,值是数字类型:

const myMap = new Map([
  ['foo', 1],
  ['bar', 2],
  ['baz', 3]
]);

现在我们想将它转换成一个普通的对象,可以使用 Object.fromEntries() 方法:

const myObj = Object.fromEntries(myMap);
console.log(myObj); // {foo: 1, bar: 2, baz: 3}

我们将 Map 作为参数传递给 Object.fromEntries(),它会返回一个由 Map 中的键值对转换成的普通对象。这个方法的作用类似于 Object.entries(),不同之处在于它是将数组转换成对象,而不是将对象转换成数组。

将普通对象转换成 Map

假设我们有一个普通的对象,它的属性名是字符串类型,属性值是数字类型:

const myObj = {
  foo: 1,
  bar: 2,
  baz: 3
};

现在我们想将它转换成一个 Map,可以使用 Object.entries() 方法和 Map 构造函数:

const myMap = new Map(Object.entries(myObj));
console.log(myMap); // Map(3) {"foo" => 1, "bar" => 2, "baz" => 3}

我们先使用 Object.entries() 将普通对象转换成一个由键值对组成的数组,然后将这个数组作为参数传递给 Map 构造函数,它会返回一个新的 Map 对象。

将 Set 转换成普通数组

假设我们有一个 Set,它包含一些字符串:

const mySet = new Set(['foo', 'bar', 'baz']);

现在我们想将它转换成一个普通的数组,可以使用 Array.from() 方法:

const myArr = Array.from(mySet);
console.log(myArr); // ["foo", "bar", "baz"]

我们将 Set 作为参数传递给 Array.from(),它会返回一个由 Set 中的值转换成的数组。

将普通数组转换成 Set

假设我们有一个普通的数组,它包含一些字符串:

const myArr = ['foo', 'bar', 'baz'];

现在我们想将它转换成一个 Set,可以使用 Set 构造函数:

const mySet = new Set(myArr);
console.log(mySet); // Set(3) {"foo", "bar", "baz"}

我们将数组作为参数传递给 Set 构造函数,它会返回一个新的 Set 对象。

总结

使用 ES10 的 Object.fromEntries() 方法,我们可以很方便地实现 Map 和 Set 类型的转换。这个方法的使用非常简单,但是它可以让我们的代码更加简洁和易于理解。在实际开发中,我们可以根据具体的需求选择合适的转换方式,从而提高代码的可读性和可维护性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658a2acceb4cecbf2df5cbee


纠错
反馈