Javascript 按键分组JSON
我将JSON数据结构化如下:Javascript 按键分组JSON,javascript,json,Javascript,Json,我将JSON数据结构化如下: [ { "Month": "Jan" "Year": 2015, "Count": 15 }, { "Month": "Feb" "Year": 2015, "Count": 5 }, { "Month": "Jan" "Year": 2016, "Count": 25 },
[
{
"Month": "Jan"
"Year": 2015,
"Count": 15
},
{
"Month": "Feb"
"Year": 2015,
"Count": 5
},
{
"Month": "Jan"
"Year": 2016,
"Count": 25
},
{
"Month": "Feb"
"Year": 2016,
"Count": 50
}
]
我想使用JavaScript对数据进行分组,以获得以下输出。有人能帮我吗
[
{
"Month": "Jan"
"Count_2015": 15,
"Count_2016": 25
},
{
"Month": "Feb"
"Count_2015": 5,
"Count_2016": 50
}
]
您可以使用forEach()
循环并使用一个对象作为thisArg
param
var数据=[{“月”:“一月”,“年”:2015,“月”:“月”:“二月”,“年”:2015,“月”:“月”:“月”:“一月”,“年”:2016,“计数”:25},{“月”:“二月”,“年”:2016,“计数”:50}]
var结果=[]
data.forEach(函数(e,i){
如果(!本[e.月]){
这个月{
月份:e.月份,
[计数+e.年]:e.计数
}
结果。推送(本[e.月])
}否则{
这个[东月]['Count_'+e年]=e.计数
}
}, {})
console.log(结果)
var月=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
var结果=[];
[]forEach.call(月,函数(月){
var monthObj={“月”:月};
结果:推(monthObj);
});
让我,年,凯斯特
对于(变量i=0;i
试试看看看这个问题。这可能会有帮助,请参阅。在JSON上迭代,并在测试条件时将其全部添加到新的JSON对象中。显然,您必须从该值创建键,这将需要一点递归。请发布您尝试过的内容,然后询问为什么它不工作。StackOverflow不是免费的代码编写服务。你可以研究很多其他类似的问题,至少可以找到一个起点。然后,当您遇到真正的代码问题时,提出问题,然后感谢Nenad。我会试试的。对不起,各位。我对这一点比较陌生,我会确保下次我面对问题时,我会正确地回答问题,并对我尝试过的内容和我面临的问题给予更清晰的解释。很好的解决方案-我更喜欢你的答案。但你不需要i参数,这是多余的。在我的版本中,我试图确保在结果集中按时间顺序显示月份,而不是假设每年所有月份都是完整的,所以如果你先处理“Sep”,它将是第一个结果。。。
var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var result = [];
[].forEach.call(months, function(month) {
var monthObj = {"Month": month};
result.push(monthObj);
});
let mi, year, keystr
for (var i=0; i< data.length; i++) {
var obj = data[i];
for (var key in obj) {
if (!obj.hasOwnProperty(key)) continue;
var value = obj[key];
switch (key) {
case "Month":
mi = months.indexOf(value);
break;
case "Year":
year = value;
break;
case "Count":
keystr = "Count_" + year.toString();
resObj = result[mi];
resObj[keystr] = value;
break;
}
}
}
console.log(result);