将$ .each jquery返回的相同值分组

时间:2013-11-30 07:17:10

标签: jquery

我正在返回与它们具有相同值的json对象。我想避免重复相同的值,只是将它们合并到一起,包括随附的其他值。我一直试图获得具有相同值的对象的长度,以便我可以进行合并,但我没有得到任何地方。我所拥有的只是价值的实际长度,而不是它们出现的次数。

$.each(data, function(i, val)){
  var city = val.city;
  var name = val.name;
}

<!-- printing the results, they would all like this -->
Los Angeles
  George Martin
Los Angeles 
  Alex Dell
Los Angeles
  Tom Front
Sao Paulo
  Jean Mont
Sao Paulo 
  Steve Bald

我想按城市分组。所以它看起来不会多余。我一直在尝试这个工作。

var newcity = null;
if(newcity !== city){
  city = city;
}
newcity = city;

我也尝试过这个,这绝对是愚蠢的。计算城市的结果

var countcityobj = val.city.length;

有人可以指导我如何用jquery做到这一点吗?谢谢。

1 个答案:

答案 0 :(得分:2)

你的意思是

var map = {};
$.each(data, function (i, rec) {
    var vals = map[rec.city] ? map[rec.city] : map[rec.city] = [];
    vals.push(rec);
});

console.log(map)
//the object map will have the city name as the key ans all the records of the city in an array as the value

演示:Fiddle