簡體   English   中英

在同一數組上將兩個元素相乘后減去一個數組的元素

[英]substract an element of an array after multiply two elements on the same array

我從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}]

現在我需要乘以每成本數量,然后減去Discount(這已經是一個負數)。 在相乘和相減之后,我必須對所有結果求和。 我如何進行減法? map內部我必須進行訂閱嗎? 就像是:

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

還是必須在減少量之內?

有人可以幫幫我,我有點不了解地圖的使用和精簡。 我正在使用javascript和AngularJs。

提前感謝。

我認為這是一個錯字。

 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); 

您可以通過對所需屬性進行解構分配 ,然后加總價格來在一個循環中計算和求和。

$scope.multiplyResult = $scope.result
    .reduce((sum, { Cost, Quantity, Discount }) => sum + Cost * Quantity + Discount, 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM