我从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]
答案 0 :(得分:2)
使用纯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);
答案 1 :(得分:1)
你应该试试这个:
$scope.resumePesos.reduce((a,b) => {return a + b.Quantity}, 0); // Note: 0 at the end
答案 2 :(得分:1)
你做错了两件事 - 你还没有为reduce函数设置一个初始值,你正在求和对象而不是它的数值属性(.Quantity
)。
var sum = $scope.resumePesos.reduce(function(acummulated, rp) {
return accumulated + rp.Quantity;
}, 0);
答案 3 :(得分:1)
只需使用
$scope.sum = $scope.resumePesos.reduce(function(a,b){return a + b.Quantity; }, 0);
答案 4 :(得分:1)
我会这样写:
$scope.resumePesos.reduce((acc, x) => acc + x.Quantity, 0);
请记住,传递给reduce的函数的第一个参数是累加器,第二个是迭代的每个值,在这种情况下是每个对象。因此,您需要访问每个对象的Quantity属性。然后,您需要将累加器的初始值作为第二个参数传递以减少自身。在这种情况下,这将是0,因为我们只需要一个数字作为结果
答案 5 :(得分:1)
您可以使用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>
答案 6 :(得分:0)
对所有人来说,我已经尝试了所有的评论,并且工作得很好!