我有一个对象数组,其中一些具有相同的月份名称,但基于日期的值不同。我们如何基于相同的属性值对数组对象进行分组,例如:
[ { 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 } ]
所以我想得到的是带有月份和月份总和的新数组:
[{month:"Jan", val:6.5},{month:"Feb", val:5.6},{month:"Mar", val:6},].
一个简单的人类可读解决方案可以如下:
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句