Javascript 将api响应中的两个值相乘,并将所有结果相加
我从一个api获取信息,我想做的是将响应中的两个不同值相乘,然后求和。我知道如何用reduce对所有值求和:Javascript 将api响应中的两个值相乘,并将所有结果相加,javascript,angularjs,Javascript,Angularjs,我从一个api获取信息,我想做的是将响应中的两个不同值相乘,然后求和。我知道如何用reduce对所有值求和: function getHistoricSales(){ $http.get('api/SomeApi') .then(function(data){ $scope.salesResult = data.data.Response; var hResults = $scope.s
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)
,还可以得到数量。那么,首先我如何将每个成本
乘以它自己的数量
,然后将结果相加
我正在使用Javascript和AngularJs
希望你能帮助我。Thanx提前…如果
$scope.salesResult
中的每个项目都有一个quantity
属性,则需要确保您没有乘以未定义的值。因此,您的reduce()
应该考虑这种情况
var salessresult=[
//有些项目只需要成本
{费用:10},
{费用:10},
//某些项目也可能有数量限制
{成本:10,数量:10},
{成本:10,数量:10},
];
var hResults=salessult.reduce((总计,结果)=>
总计+(结果。数量)
?结果.成本*结果.数量
:结果。成本),0);
console.log(HRESULT);//220
我想你要找的是:
var hResults = $scope.salesResult
.map(sr => sr.Cost * sr.Quantity)
.reduce((a, b) => a + b);
因此,您希望将每个销售结果(使用map
)转换为其自己的结果(即成本*数量),然后将这些结果相加(使用reduce
)
例如:
let数据=[
{成本:10,数量:15},
{成本:5,数量:11},
{成本:2,数量:110},
{成本:5,数量:90},
]
让结果=数据
.map(sr=>sr.成本*sr.数量)
.减少((a,b)=>a+b);
控制台日志(结果)代码>(a,b)=>a+(b.成本*b.数量)
?Thanx,听起来可能很明显,但没错,我的大脑太累了