通过相同的键对javascript数组对象进行分组 [英] Group javascript array object by same key

查看:79
本文介绍了通过相同的键对javascript数组对象进行分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个对象数组,其中一些具有相同的月份名称,但基于日期的值不同.我们如何基于相同的属性值对数组对象进行分组,例如:

I have an array of object some with same month name but different values based on day. How do we group array object based on same property value for example:

 [ { month: 'Jan', value: 3 },
  { month: 'Jan', value: 3.5 },
  { month: 'Feb', value: 2.1 },
  { month: 'Mar', value: 6 },
  { month: 'Apr', value: 4.3 },
  { month: 'May', value: 5.5 },
  { month: 'Jun', value: 7 },
  { month: 'Jun', value: 9 },
  { month: 'Jul', value: 7 },
  { month: 'Jul', value: 9 },
  { month: 'Jul', value: 7 },
  { month: 'Aug', value: 9 },
  { month: 'Sep', value: 9 },
  { month: 'Sep', value: 9 },
  { month: 'Oct', value: 8 },
  { month: 'Oct', value: 5 },
  { month: 'Oct', value: 3 },
  { month: 'Nov', value: 12 },
  { month: 'Nov', value: 19.5 } ]

所以我想得到的是带有月份和月份总和值的新数组:

So what i want to get is new array with month and sum of month values:

[{month:"Jan", val:6.5},{month:"Feb", val:5.6},{month:"Mar", val:6},].

推荐答案

一个简单的人类可读解决方案可以如下:

A simple human-readable solution can be as follows:

var input = [ { month: 'Jan', value: 3 },
  { month: 'Jan', value: 3.5 },
  { month: 'Feb', value: 2.1 },
  { month: 'Mar', value: 6 },
  { month: 'Apr', value: 4.3 },
  { month: 'May', value: 5.5 },
  { month: 'Jun', value: 7 },
  { month: 'Jun', value: 9 },
  { month: 'Jul', value: 7 },
  { month: 'Jul', value: 9 },
  { month: 'Jul', value: 7 },
  { month: 'Aug', value: 9 },
  { month: 'Sep', value: 9 },
  { month: 'Sep', value: 9 },
  { month: 'Oct', value: 8 },
  { month: 'Oct', value: 5 },
  { month: 'Oct', value: 3 },
  { month: 'Nov', value: 12 },
  { month: 'Nov', value: 19.5 } ];

var result = [];

for (var i = 0; i < input.length; i++) {
    var data = input[i];
    var found=false;
    for(var j=0; j<result.length; j++) {
        if(result[j].month === data.month) {
            found=true;
            result[j].value += data.value;
            break;
        }
    }
    if(!found) {
        result.push(data);
    }
}

//The result array is your desired result
console.log(result);

这篇关于通过相同的键对javascript数组对象进行分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆