我有以下JSON:
[{"state":"MN","value":10},{"state":"MN","value":10},{"state":"MN","value":10},{"state":"NY","value":8},{"state":"NY","value":8},{"state":"NY","value":8}]在JQuery/JS或任何其他HTML兼容语言中,有没有一个命令可以让我将上面的JSON转换为以下内容:
[{"state":"MN","value":[10,10,10]},{"state":"NY","value":[8,8,8]}]谢谢!
发布于 2012-04-20 05:37:18
下面的循环将为您提供所需的输出,
var data = [{"state":"MN","value":10},{"state":"MN","value":10},{"state":"MN","value":10},{"state":"NY","value":8},{"state":"NY","value":8},{"state":"NY","value":8}];
var tmp = {};
var t;
$.each (data, function (i, val) {
if (tmp.hasOwnProperty(val.state)) {
t = tmp[val.state];
t.push(val.value);
} else {
tmp[val.state] = [val.value];
}
});
var output = [];
for (i in tmp) {
output.push({'state': i, 'value': tmp[i]});
}证明:

发布于 2012-04-20 05:38:51
您可以使用:
var input=[{"state":"MN","value":10},{"state":"MN","value":10},{"state":"MN","value":10},{"state":"NY","value":8},{"state":"NY","value":8},{"state":"NY","value":8}]
var tmp={}, output=[];
while(o=input.pop()) (tmp[o.state] || (tmp[o.state]=[])).push(o.value); //you could even stop here if it is enough for you
for(k in tmp) output.push({state:k,value:tmp[k]});https://stackoverflow.com/questions/10237011
复制相似问题