【问题标题】:Sum the values of a column对列的值求和
【发布时间】:2020-12-16 18:47:42
【问题描述】:

我有数组:

array = [
            {
                "id": 1,
                "Price": 100,
                "Item": {"id": 1, Name: "A"},
                "Date": {"id": 1, Start: "202001"}
            },
            {
                "id": 2,
                "Price": 200,
                "Item": {"id": 1, Name: "A"},
                "Date": {"id": 2, Start: "202002"}
            },
            {
                "id": 3,
                "Price": 300,
                "Item": {"id": 3, Name: "B"},
                "Date": {"id": 2, Start: "202002"}
            }
    ]

并且我希望能够对给定期间的值求和,如下表所示:

ITEM 202002 202003 TOTAL
A 100 200 300
B 300 300
TOTAL 100 500 600

有什么建议吗?谢谢!

【问题讨论】:

标签: javascript arrays json reactjs sum


【解决方案1】:

看看这个,它会让你走上正确的道路

var aHolder = 0;
for(var i = 0; i<array.length; i++){
   if(array[i].Date.Start === '202002') {
     aHolder = aHolder + array[i].Price;
   }
 }
console.log(aHolder);

【讨论】:

  • 谢谢!我认为它可以工作。在示例中,您需要通过array 修复arr。它为给定的Item 求和,现在我想为给定的Date 求和
  • 它有效,但仅限于特定时期。我需要为每个时期的结果构建一个数组。建议
  • 添加另一个 var ,例如。 var secondPeriod = 0,并在 FOR 循环中添加另一个 IF 语句
【解决方案2】:

我试过了:

var subtotal = 0;
let subtotalArray = [];
array.map(elem => {
    for(var i = 0; i<array.length; i++){
        if(array[i].Date.Start === elem.Date.Start) {
            subtotal = subtotal + array[i].Price
        }
    }
    subtotalArray.push(subtotal)
})

但它不起作用。我需要一个包含每个时期结果的数组。有什么建议吗?

【讨论】:

  • 我不认为这个循环(array.map)是你想要实现的。它总是会在数组 [] 中使用相同数量的记录填充 subtotalArray,例如,如果数组 [] 中有 20 个项目但只有 2 个日期,那么您只想在 subtotalArray[]中有 2 个结果>
  • 也许你的外循环应该是日期数
  • 还需要在每次循环后清除小计变量,以便下一个内循环可以从零开始累加
  • subtotalArray.push(subtotal) subtotal = 0;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多