ECMAScript 2019 中的 Object.fromEntries() 方法的用途与示例

在 ECMAScript 2019 中,新增了一个非常有用的方法 Object.fromEntries(),它可以将一个包含键值对的数组转换为一个对象。这个方法的出现,可以让我们更加方便地将数据转换为对象,同时也可以简化代码。

用途

在实际开发中,我们经常需要将一个数组转换为一个对象,这个数组中每个元素都是一个包含键值对的数组。在以前,我们可能需要使用循环或者 reduce 方法来实现这个功能,代码会比较繁琐。但是现在,我们可以使用 Object.fromEntries() 方法来简化代码。

示例

下面我们来看一个实际的示例,假设我们有一个包含学生姓名和分数的数组:

const scores = [
  ['John', 90],
  ['Mary', 85],
  ['Tom', 80]
];

我们可以使用 Object.fromEntries() 方法将这个数组转换为一个对象:

const scoreObj = Object.fromEntries(scores);
console.log(scoreObj);
// 输出:{ John: 90, Mary: 85, Tom: 80 }

这里我们将 scores 数组传递给了 Object.fromEntries() 方法,它会将数组中的每个元素都转换为一个键值对,然后将这些键值对组成一个对象。

深入理解

除了上面的示例之外,我们还可以使用 Object.fromEntries() 方法来进行更加复杂的数据转换。下面我们来看一个稍微复杂一些的示例。

假设我们有一个包含商品名称和价格的数组:

const items = [
  ['apple', 2.5],
  ['banana', 1.5],
  ['orange', 3]
];

现在我们想要将这个数组转换为一个包含商品名称和价格的对象,并且要对价格进行一些处理,比如将价格乘以 2。我们可以使用 Object.fromEntries() 方法和 map() 方法来实现这个功能:

const itemObj = Object.fromEntries(
  items.map(([name, price]) => [name, price * 2])
);
console.log(itemObj);
// 输出:{ apple: 5, banana: 3, orange: 6 }

这里我们先使用 map() 方法将数组中的每个元素都转换为一个新的数组,这个新数组中的第二个元素是原来的价格乘以 2。然后我们将这些新数组传递给 Object.fromEntries() 方法,它会将它们转换为一个对象。

需要注意的是,Object.fromEntries() 方法是一个静态方法,它不能通过对象实例来调用。另外,这个方法在一些老版本的浏览器中可能不支持,我们可以使用 polyfill 来解决这个问题。

总结

Object.fromEntries() 方法是 ECMAScript 2019 中新增的一个非常有用的方法,它可以将一个包含键值对的数组转换为一个对象。在实际开发中,我们经常需要将一个数组转换为一个对象,这个方法可以让我们更加方便地实现这个功能,并且可以简化代码。除此之外,我们还可以使用这个方法进行更加复杂的数据转换。

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