[英]How to find the sum of values of objects inside an Array using javascript?
[英]Sum values inside of array with javascript
我从api获取信息,我想要做的是将其中的值相加。 让我们说下一个代码:
function totalPesos(){
$http.get('/api/valueForTest')
.then(function(data){
$scope.resumePesos = data.data.Response;
//console.log($scope.resumePesos);
}
得到下一个答案:
[{Id: 60, Name: Chuck, Quantity: 300},
{Id: 61, Name: Arthur, Quantity: 199},
{Id: 62, Name: John, Quantity: 450}]
我想要做的是总和Quantity
。 我怎样才能做到这一点? 我尝试过:
$scope.resumePesos.reduce(function(a,b){return a + b; });
但答案是[object Object]
使用纯JS尝试以下内容:
var data = [{Id: 60, Name: 'Chuck', Quantity: 300}, {Id: 61, Name: 'Arthur', Quantity: 199}, {Id: 62, Name: 'John', Quantity: 450}] var sum = data.reduce(function(a, b){ a += b['Quantity']; return a; },0) console.log(sum);
你应该试试这个:
$scope.resumePesos.reduce((a,b) => {return a + b.Quantity}, 0); // Note: 0 at the end
你做错了两件事 - 你还没有为reduce函数设置一个初始值,你正在求和对象而不是它的数值属性( .Quantity
)。
var sum = $scope.resumePesos.reduce(function(acummulated, rp) {
return accumulated + rp.Quantity;
}, 0);
只是使用
$scope.sum = $scope.resumePesos.reduce(function(a,b){return a + b.Quantity; }, 0);
我会这样写:
$scope.resumePesos.reduce((acc, x) => acc + x.Quantity, 0);
请记住,传递给reduce的函数的第一个参数是累加器,第二个是迭代的每个值,在这种情况下是每个对象。 因此,您需要访问每个对象的Quantity属性。 然后,您需要将累加器的初始值作为第二个参数传递以减少自身。 在这种情况下,这将是0,因为我们只需要一个数字作为结果
您可以使用lodash ,如果您想在lodash上使用其他一些功能,这将非常有用。
你可以做
_.sumBy($ scope.resumePesos,'Quantity');
var data = [ {Id: 60, Name: 'Chuck', Quantity: 300}, {Id: 61, Name: 'Arthur', Quantity: 199}, {Id: 62, Name: 'John', Quantity: 450} ] console.log(_.sumBy(data, 'Quantity'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
对所有人来说,我已经尝试了所有的评论,并且工作得很好!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.