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

时间:2018-10-12 03:46:51

标签: javascript angularjs

我从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。

希望您能帮助我。提前感谢...

2 个答案:

答案 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