首页 > 解决方案 > 将同一数组上的两个元素相乘后减去数组的一个元素

问题描述

我从 api 获取信息,然后将响应中的两个元素相乘,然后对结果求和。到目前为止,这是我的代码:

function forTest(){
            $http.get('/api/DaApi?di=' + '2018-11-01' + '&df=' + '2018-11-01')
            .then(function(data){
                $scope.result = data.data.Response;

                $scope.multiplyResult = $scope.result.map(x => x.Cost * x.Quantity).reduce((a, b) => a + b, 0);
        }

一切都很完美,但现在我必须在总和之前进行另一次操作。假设现在我有 3 个元素Cost, Quantity and Discount

[{Quantity: 2, Cost: 1000, Discount: -100},
{Quantity: 3, Cost: 2000, Discount: -500},
{Quantity: 2, Costo: 3130, Discount: -120}]

现在我需要将每个成本的数量相乘,然后减去折扣(这已经是一个负数)。在乘法和减法之后,我必须对所有结果求和。我怎样才能做减法?在里面map我必须做减法?就像是:

$scope.multiplyResult = $scope.result.map(x => (x.Cost * x.Quantity) + x.Discount)).reduce((a, b) => a + b, 0);

还是必须在reduce里面?

有人可以帮助我,我对map和reduce的使用有点了解。我正在使用 javascript 和 AngularJs。

提前谢谢。

标签: javascript

解决方案


我认为这是一个错字。

let arr = [{Quantity: 2, Cost: 1000, Discount: -100},
{Quantity: 3, Cost: 2000, Discount: -500},
{Quantity: 2, Cost: 3130, Discount: -120}];

let sum = arr.map(x => (x.Cost * x.Quantity) + x.Discount).reduce((a,b)=>a+b,0)
console.log(sum);


推荐阅读