【发布时间】:2014-07-25 17:06:20
【问题描述】:
我有一个 json 对象,它是一个数组数组。它看起来像这样:
[{county: Adams, candidate: Smith, votes: 5},
{county: Adams, candidate: Jones, votes: 1},
{county: Clay, candidate: Jones, votes: 7},
{county: Clay, candidate: Smith, votes: 5},
{county: York, candidate: Jones, votes: 10},
{county: York, candidate: Smith, votes: 9}]
对数组进行排序,使得每个县中得票最多的候选人是该县的第一个出现的项目。
我想过滤数组,只显示每个县的得票最多的候选人。
最好的方法是什么?我尝试使用 pop() 删除具有相同县名的项目,但 pop 只是删除了数组中的最后一项。我在看 splice,但我不确定是否有更直接的方法来做到这一点。
jquery:
$.ajax({
url: "myquerypage.php",
method: "POST",
success: function(data) {
var obj = jQuery.parseJSON(data); //this is my json array of rows from the dB
var obj2 = obj; //I made a copy of the original json array
var testString = obj2[0].county;
for (var i = 0; i < obj2.length; i++) {
if (obj2[i].county == testString) {
obj2[i].pop(); //this is wrong
} else {
testString = obj2[i].county;
}
}
console.log(obj2);
});
【问题讨论】:
-
您知道您的 JSON 中缺少冒号 (":") 吗?这是第三项,在“投票”和 7 之间。顺便说一下,如果 JSON 已经按(首先)“县”和(其次)“投票”排序,那么您只需抓住第一项每个县,对吧?
-
@BinaryCat:好的。已更正。但没关系,因为实际的数组没有缺少冒号。
-
如果您要进行大量数据操作,您是否考虑过添加类似 UnderscoreJS 的内容以简化操作?
-
看看我发布的 jsfiddle。它返回一个由三个对象组成的数组 - 每个县获得最多票的对象。