如何根据第一个值对数组求和和分组

NoobAndGo

我需要对数组的第二个值求和并根据第一个值(年)对其进行分组。

这是我的数组:

dataArray = [[2020,140],[2020,145],[2020,90],[2021,88],[2021,12]];

这是我的功能:

var result = [];
        dataArray.reduce(function(res, value) {
            if (!res[value[0]]) {
                res[value[0]] = [ value[0], 0 ];
                dataArray.push(res[value[0]])
            }
            res[value[0]][1] += value[1];
            return res;
        }, {});

我需要这个结果:

dataArray = [[2020,375],[2021,100]]

但是我得到了奇怪的结果,我认为是基于先前值的总和。

有人能帮我吗?谢谢

乔乔先生

你可以这样做

const
  dataArray = [[2020,140],[2020,145],[2020,90],[2021,88],[2021,12]]
, result =
    dataArray.reduce((sums,[year,value])=>
      {
      let sYear = sums.find(x=>x[0]===year)
      if (!sYear)  sums.push([year,value])
      else sYear[1] += value
      return sums
      },[])

console.log( result )
.as-console-wrapper {max-height: 100%!important;top:0 }

或者:

const
  dataArray = [[2020,140],[2020,145],[2020,90],[2021,88],[2021,12]]
, result2 =
    Object.entries(
    dataArray.reduce((sums,[year,value])=>
      {
      sums[year] = (sums[year] ?? 0) + value
      return sums;
      }, {}))

console.log(  result2 )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据第一个值对数组进行排序?

如何通过第一个元素对象键对数组中的数组进行分组

根据数字数组的第一个和最后一个值对数组进行排序

根据数组的第一个元素对数组进行分组,而无需在Ruby中进行重复

如何根据前一个元素的新值对数组中的元素求和?

如何根据第一个或第二个中的较大值对成对数组进行排序

如何按数组的第一个元素分组?

如何通过第一个子数组值对数组数组(2D数组)进行排序

根据第一个数组对数组进行排序

熊猫:按两列分组,对第一列分组中的第一个值求和

数组的第一个值

获取对数组的第一个元素(Swift)

用Java中的第一个值对对数组进行排序

对数组进行排序,使给定值成为第一个

根据第一个表的ID对第二个表中的值求和,并将值插入第一个表中

多维PHP数组按第一个数组的值分组

根据第一个单词分组行

如何根据php中嵌套数组的第一个值对多维数组进行排序?

根据第二个值找到内部数组的第一个值

根据第二个值返回数组的第一个值

按熊猫数据框唯一的第一个值分组 - 返回 numpy 数组

如何根据数组的字符串元素的第一个字符在Javascript中对数组进行排序?-JavaScript

按组的第一个值分组值

使用ruby根据数组的第一个元素组合数组值

如何根据第一个元素对嵌套列表进行分组?

Ruby:对每个子数组的第一个元素分组的元素求和的有效方法

基于第一个字符值的分组元素数组php

如何减少0(n)以查找对特定值求和的对的第一个实例

谷歌表数组公式求和重复数组中的所有值的第一个值