我从api获取信息,我想做的是从响应中将两个不同的值相乘,然后求和。我知道如何用reduce求和所有值:
function getHistoricSales(){
$http.get('api/SomeApi')
.then(function(data){
$scope.salesResult = data.data.Response;
var hResults = $scope.salesResult.reduce((a, b) => a + b.Cost, 0);
$scope.historic = hResult.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
});
}
但是,例如,在该响应上,不仅获得成本(b.Cost)
,而且获得数量。那么,我如何首先将每个Cost
乘以它自己的Quantity
然后求和呢?
我正在使用Javascript和AngularJs。
希望您能帮助我。提前感谢...
答案 0 :(得分:1)
如果if isinstance(a, list) and len(a)==0:
print("Received an empty list")
中的每个项目可选地具有$scope.salesResult
属性,则需要确保您未乘以quantity
值。因此,您的undefined
应该考虑到这种情况。
reduce()
答案 1 :(得分:1)
我认为您正在寻找的是
var salesResult = [
// Some items only have the cost
{ cost: 10 },
{ cost: 10 },
// Some items might also have a quantity
{ cost: 10, quantity: 10 },
{ cost: 10, quantity: 10 },
];
var hResults = salesResult.reduce((total, result) =>
total + (result.quantity
? result.cost * result.quantity
: result.cost), 0);
console.log(hResults); // 220
因此,您想将每个销售结果(带有var hResults = $scope.salesResult
.map(sr => sr.Cost * sr.Quantity)
.reduce((a, b) => a + b);
)转换成自己的结果(即成本*数量),然后将它们相加(带有map
)。
例如:
reduce