使用 JavaScript 获取地图中所有值的总和

在 JavaScript 中获取 Map 中所有值的总和

Get the Sum of all Values in a Map using JavaScript

要获取 a 中所有值的总和Map

  1. 声明一个sum变量并将其初始化为0.
  2. 使用该forEach()方法迭代Map.
  3. 在每次迭代中,将数字添加到sum,重新分配变量。
索引.js
const map1 = new Map([ ['key1', 1], ['key2', 2], ]); let sum = 0; map1.forEach(value => { sum += value; }); console.log(sum); // 👉️ 3

我们传递给方法的函数Map.forEach()会为对象中的每个元素调用Map

forEach()方法返回undefined,因此我们需要声明一个sum
存储状态的变量。

请注意,我们使用let关键字来声明变量。 sum

使用声明的变量const不能重新赋值。

我们使用
Map()
构造函数创建了一个
Map具有 2 个键值对的对象。

我们传递给Map.forEach方法的函数

使用 3 个参数调用:

  • value当前迭代
  • key当前迭代
  • Map被迭代的对象

在每次迭代中,我们将当前值添加到sum并重新分配变量。

索引.js
const map1 = new Map([ ['key1', 1], ['key2', 2], ]); let sum = 0; map1.forEach(value => { sum += value; }); console.log(sum); // 👉️ 3

一旦函数遍历整个Map对象,我们就将总数存储在sum变量中。

或者,您可以使用for...of循环。

for...of使用循环获取 Map 中所有值的总和

这是一个四步过程:

  1. 声明一个sum变量并将其初始化为一个空数组。
  2. 使用该Map.values()方法获取地图值的迭代器。
  3. 使用for...of循环迭代迭代器。
  4. 将每个值添加到sum变量。
索引.js
const map1 = new Map([ ['key1', 1], ['key2', 2], ]); let sum = 0; for (const value of map1.values()) { sum += value; } console.log(sum); // 👉️ 3

Map.values

方法返回 Map 值的迭代器对象

索引.js
const map1 = new Map([ ['key1', 1], ['key2', 2], ]); // 👇️ [Map Iterator] { 1, 2 } console.log(map1.values());

我们使用for...of循环来迭代迭代器对象。

在每次迭代中,我们将当前值添加到sum变量中。

或者,您可以使用该reduce()方法。

使用 获取 Map 中所有值的总和reduce()

这是一个三步过程:

  1. 使用该Map.values()方法获取地图值的迭代器。
  2. 使用Array.from()方法将迭代器转换为数组。
  3. 使用该Array.reduce()方法获取值的总和。
索引.js
const map1 = new Map([ ['key1', 1], ['key2', 2], ['key3', 3], ]); const values = Array.from(map1.values()); const sum = values.reduce((accumulator, current) => { return accumulator + current; }, 0); console.log(sum); // 👉️ 6

Array.from
方法从提供的可迭代对象创建一个新

浅拷贝数组。

我们将迭代器转换为数组以便能够使用该Array.reduce()
方法。

我们传递给回调函数的第二个参数是变量的初始值accumulator0在我们的例子中)。

在每次迭代中,我们将当前Map值添加到累积数并返回结果。

累积的数字在每次迭代时传递给回调函数,直到sum计算出值。

您选择哪种方法是个人喜好的问题。我会使用该
Map.forEach()方法,因为我发现它非常直接和直观。