簡體   English   中英

如何將新的計算數組對象添加到現有數組

[英]how to add new calculate array object to existing array

我有一個數組

data = [
        {location: "Phnom Penh", sale: 1000 },
        {location: "Kandal", sale: 500 },
        {location: "Takeo", sale: 300 },
        {location: "Kompot", sale: 700 },
        {location: "Prey Veng", sale: 100 },
        {location: "Seam Reap", sale: 800 }
      ];

新計算對象:

Total1 = Phnom Penh + Takeo
Total 2 = Prey Veng + Seam Reap

然后我想將這兩個對象添加到現有數組(數據)

data = [
        {location: "Phnom Penh", sale: 1000 },
        {location: "Kandal", sale: 500 },
        {location: "Takeo", sale: 300 },
        {location: "Kompot", sale: 700 },
        {location: "Prey Veng", sale: 100 },
        {location: "Seam Reap", sale: 800 },
        {location: "Total1", sale: 1300 },
        {location: "Total2", sale: 900 }
      ];

有人請幫助我這樣做嗎? 謝謝

您可以使用定制函數過濾出相關對象,然后計算它們的總銷售額。

此處將數據和位置數組傳遞給getSales 過濾掉需要的對象,然后使用reduce來求和它們的銷售額。 然后,您可以使用舊對象中的數據構建新對象,並添加新數據。

 const data = [ {location: "Phnom Penh", sale: 1000 }, {location: "Kandal", sale: 500 }, {location: "Takeo", sale: 300 }, {location: "Kompot", sale: 700 }, {location: "Prey Veng", sale: 100 }, {location: "Seam Reap", sale: 800 } ]; function getSales(data, arr) { return data // Return the current object where the arr // includes the current object location .filter(el => arr.includes(el.location)) // Iterate over those returned objects and sum their sales .reduce((acc, { sale }) => acc += sale, 0); } const out = [ ...data, { location: 'Total1', sale: getSales(data, ['Phnom Penh', 'Takeo']) }, { location: 'Total2', sale: getSales(data, ['Prey Veng', 'Seam Reap']) } ]; console.log(out);

您應該添加來自4位置的銷售額,然后推送數組中的對象。 像這樣的事情應該有效。

data.push({location: "Total1", sale: data["Phnom Penh"].sale + data["Takeo"].sale})
data.push({location: "Total2", sale: data["Prey Veng"].sale + data["Seam Reap"].sale})

另請注意, sale可能不是整數, +可能不會將它們相加,因此您應該使用parseInt

暫無
暫無

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

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