Умножьте два значения из ответа API и суммируйте все результаты - PullRequest
0 голосов
/ 12 октября 2018

Я получаю информацию от 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 голосов
/ 12 октября 2018

Я думаю, что вы ищете:

var hResults = $scope.salesResult
                       .map(sr => sr.Cost * sr.Quantity)
                       .reduce((a, b) => a + b);

Таким образом, вы хотите преобразовать каждый результат продаж (с map) в его собственный результат (т.е. стоимость * количество), а затем суммировать эти(с reduce).

Например:

let data = [
 {Cost: 10, Quantity: 15},
 {Cost: 5, Quantity: 11},
 {Cost: 2, Quantity: 110},
 {Cost: 5, Quantity: 90},
]

let result = data
              .map(sr => sr.Cost * sr.Quantity)
              .reduce((a, b) => a + b);

console.log(result);
0 голосов
/ 12 октября 2018

Если каждый элемент в $scope.salesResult дополнительно имеет свойство quantity, вам нужно убедиться, что вы не умножаете на значение undefined.Таким образом, ваш reduce() должен учитывать это условие.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...