如何在 JavaScript 中对对象的值求和

对对象的值求和

How to Sum the Values of an Object in JavaScript

对一个对象的值求和:

  1. 使用该Object.values()方法获取对象值的数组。
  2. 使用该Array.reduce()方法遍历数组。
  3. 将当前数与累计数相加并返回结果。
索引.js
const obj = { one: 5, two: 15, three: 45, }; // 👇️ [5, 15, 45] const values = Object.values(obj); const sum = values.reduce((accumulator, value) => { return accumulator + value; }, 0); console.log(sum); // 👉️ 65

我们使用了
Object.values()
方法来获取包含对象值的数组。

索引.js
const obj = { one: 5, two: 15, three: 45, }; const values = Object.values(obj); // 👇️ [ 5, 15, 45 ] console.log(values);

我们传递给Array.reduce()方法的函数会为数组中的每个元素调用。

的初始值accumulator0因为这是我们作为第二个参数传递给
reduce()
方法的值。

索引.js
const obj = { one: 5, two: 15, three: 45, }; // 👇️ [5, 15, 45] const values = Object.values(obj); const sum = values.reduce((accumulator, value) => { return accumulator + value; }, 0); console.log(sum); // 👉️ 65
在每次迭代中,我们将accumulator和当前值相加并返回结果。

您可以想象accumulator参数被设置为从先前调用回调函数返回的任何值。

sum变量存储最后一次迭代后对象值的总和。

如果您必须经常计算对象值的总和,请定义一个可重用的函数。

索引.js
function sumObjectValues(object) { return Object.values(object).reduce((accumulator, value) => { return accumulator + value; }, 0); } const obj = { one: 5, two: 15, three: 45, }; const result = sumObjectValues(obj); console.log(result); // 👉️ 65

sumObjectValues()函数接受一个对象并计算对象值的总和。

或者,您可以使用for...of循环遍历数组。

使用 for…of 对对象的值求和

对一个对象的值求和:

  1. 使用关键字初始化sum变量。0let
  2. 使用该Object.values()方法获取对象值的数组。
  3. 使用for...of循环遍历数组。
  4. sum变量增加当前值。
索引.js
const obj = { one: 5, two: 15, three: 45, }; let sum = 0; for (const value of Object.values(obj)) { sum += value; } console.log(sum); // 👉️ 65

请注意,我们使用关键字声明了sum变量。let如果我们使用
const,我们将无法重新分配它。

我们使用该Object.values()方法获取对象值的数组。

for…of
语句用于循环遍历可迭代对象,如数组、
字符串
Map
SetNodeList对象generators

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

如果您必须经常这样做,请将逻辑提取到可重用的函数中。

索引.js
function sumObjectValues(object) { let total = 0; for (const value of Object.values(object)) { total += value; } return total; } const obj = { one: 5, two: 15, three: 45, }; const result = sumObjectValues(obj); console.log(result); // 👉️ 65

sumObjectValues()函数以一个对象作为参数,对对象的值求和并返回结果。

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

使用for...in循环对对象的值求和

对一个对象的值求和:

  1. 使用关键字初始化sum变量。0let
  2. 使用for...in循环遍历对象的属性。
  3. sum在每次迭代中,用当前值递增变量。
索引.js
const obj = { one: 5, two: 15, three: 45, }; let sum = 0; for (const key in obj) { sum += obj[key]; } console.log(sum); // 👉️ 65

for…in
循环遍历对象的属性并允许我们访问每个值

一旦循环遍历了对象的所有属性,我们就得到了值的总和。

您选择哪种方法是个人喜好的问题。我会选择 reduce 方法,因为它不需要声明中间变量并且非常可读和直接。