繁体   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