对对象的值求和
How to Sum the Values of an Object in JavaScript
对一个对象的值求和:
- 使用该
Object.values()
方法获取对象值的数组。 - 使用该
Array.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
我们使用了
Object.values()
方法来获取包含对象值的数组。
索引.js
const obj = { one: 5, two: 15, three: 45, }; const values = Object.values(obj); // 👇️ [ 5, 15, 45 ] console.log(values);
我们传递给Array.reduce()
方法的函数会为数组中的每个元素调用。
的初始值accumulator
是0
因为这是我们作为第二个参数传递给
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 对对象的值求和
对一个对象的值求和:
- 使用关键字初始化
sum
变量。0
let
- 使用该
Object.values()
方法获取对象值的数组。 - 使用
for...of
循环遍历数组。 - 将
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
、
Set
和NodeList
对象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
循环对对象的值求和
对一个对象的值求和:
- 使用关键字初始化
sum
变量。0
let
- 使用
for...in
循环遍历对象的属性。 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 方法,因为它不需要声明中间变量并且非常可读和直接。