Javascript 将api响应中的两个值相乘,并将所有结果相加

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

我从一个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)
,还可以得到数量。那么,首先我如何将每个
成本
乘以它自己的
数量
,然后将结果相加

我正在使用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,听起来可能很明显,但没错,我的大脑太累了