如何用JavaScript对API返回数组中的Quantity字段求和?
解决AngularJS中数组Quantity字段求和的问题
嘿,我懂你碰到的麻烦啦!你之前用reduce的时候直接返回a + b,得到[object Object]是因为你在把整个对象做加法——JavaScript会把对象转换成字符串[object Object]来拼接,结果当然不对啦。
要正确对Quantity字段求和,你需要注意两个关键点:
- 在回调函数里要取每个对象的
Quantity属性来累加 - 给
reduce传入初始值0,避免第一次迭代时处理对象而非数字
正确的实现代码
// 传统函数写法 $scope.totalQuantity = $scope.resumePesos.reduce(function(accumulator, currentItem) { return accumulator + currentItem.Quantity; }, 0); // 这里的0是初始累加值,必须加!
如果你的项目支持ES6语法,也可以用更简洁的箭头函数:
// ES6箭头函数写法 $scope.totalQuantity = $scope.resumePesos.reduce((acc, item) => acc + item.Quantity, 0);
为什么这样能行?
咱们用你给出的数组来走一遍流程:
- 初始时
accumulator是0(我们传入的初始值),currentItem是第一个对象{Id: 60, Name: Chuck, Quantity: 300},累加后得到0 + 300 = 300 - 下一次迭代,
accumulator变成300,currentItem是第二个对象,累加后得到300 + 199 = 499 - 最后一次迭代,
accumulator是499,currentItem是第三个对象,累加后得到499 + 450 = 949 - 最终返回的949就是所有Quantity的总和啦
内容的提问来源于stack exchange,提问作者Chuck Villavicencio
相关产品推荐
相关产品推荐

