簡體   English   中英

如何在Angular JS的對象數組內求和貨幣值

[英]How to sum up currency values inside an array of objects in Angular JS

我有一個API調用返回的對象數組。 對象結構看起來像這樣..

在此處輸入圖片說明

像這樣,數組可以包含n個對象。

我要做的是.. sum up all the values of all the object's selectedMapping.cost並顯示總和。

但是一個問題是costs可能有些棘手。

它們可以采用.30或978等格式,因此我們必須分別假設0.30和978.00。 它們也可以為null或未定義,在這種情況下,我們必須將其默認設置為0.0

如何在Angular JS中實現總和? 如何處理適當的轉換並顯示總和?

這似乎是使用減少的好時機

 const data = [ { selectedMapping: { cost: ".30" } }, { selectedMapping: { cost: "200" } }, { selectedMapping: { cost: ".60" } }, { selectedMapping: { cost: ".22" } }, { selectedMapping: { cost: null } }]; const sumCost = (data) => data.reduce( (cost, entry) => cost + (parseFloat(entry.selectedMapping.cost) || 0), 0 ) console.log(sumCost(data)) 

希望我對你沒錯,然后我創建的這個插件可以滿足您的要求: https ://embed.plnkr.co/zzQkybjND5xi2Uo7dNHZ/

只需遍歷數組,檢查該值是否為null或undefined(如果將其設置為0.0)並求和所有值。

這是我處理未定義/空項目的解決方案

const sum = items.reduce((prevVal,item)=>{
  const selectedMapping = item.selectedMapping || null
  const cost = (isNaN(selectedMapping) && 'cost' in selectedMapping)? Number(selectedMapping.cost) : 0 
  return prevVal + cost
},0)
console.log(sum.toFixed(2))

這是一個JSBin

以及JavaScript的Map,Reduce和Filter的參考

您可以映射到數組並獲取成本,然后使用ramdajs的R.sum方法

const array = [
  {
    selectedMapping: {
      cost: ".30"
    }
  },
  {
    selectedMapping: {
      cost: "200"
    }
  },
  {
    selectedMapping: {
      cost: ".60"
    }
  },
  {
    selectedMapping: {
      cost: ".10"
    }
  },];

const currency = array.map(curr=>parseFloat(curr.selectedMapping.cost))
R.sum(currency); 

是拒絕執行操作的代碼。

暫無
暫無

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

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