我想显示来自JSON文件的统计信息,按" verbruik"排序。现在我知道如果数组有一个像1 = "12313", 3 = "2124"
那样的信息,如何对数组进行排序。
我已将整个JSON文件放在变量中:
for( var index in data)
{
var item = data[index];
也有人可以非常简单地解释一下:
for (var index in data)
我知道你可以使用3个参数:value,key和index。但是我的代码如何知道哪一个是值,键或索引?就像我只在其中放入索引一样,它将其识别为索引而不是键。
注:
我正在努力理解和学习JQUERY和JSON,请怜悯我。
JSON文件:
{
"46": {
"voornaam": "Sergio",
"achternaam": "Bloemenouw",
"verbruik": "100000",
"afdeling": "FHACI",
"geslacht": "man",
"verbruikPercentage": "18.2%"
},
"25": {
"voornaam": "Chayenne",
"achternaam": "Aalberink",
"verbruik": "200000",
"afdeling": "FHEHT",
"geslacht": "vrouw",
"verbruikPercentage": "36.4%"
},
"63": {
"voornaam": "Theo",
"achternaam": "Beijer",
"verbruik": "50000",
"afdeling": "FHCOM",
"geslacht": "man",
"verbruikPercentage": "9.1%"
},
"55": {
"voornaam": "Xantha",
"achternaam": "Dijenborgh",
"verbruik": "80000",
"afdeling": "FHJ",
"geslacht": "vrouw",
"verbruikPercentage": "14.5%"
},
"21": {
"voornaam": "Steinar",
"achternaam": "Beernink",
"verbruik": "297000",
"afdeling": "FHFM",
"geslacht": "man",
"verbruikPercentage": "54%"
},
"13": {
"voornaam": "Oger",
"achternaam": "Annevelink",
"verbruik": "375000",
"afdeling": "FHMER",
"geslacht": "man",
"verbruikPercentage": "68.2%"
},
"9": {
"voornaam": "Liduin",
"achternaam": "Bouwens",
"verbruik": "400000",
"afdeling": "FHMEM",
"geslacht": "vrouw",
"verbruikPercentage": "72.7%"
},
"39": {
"voornaam": "Janique",
"achternaam": "Brukink",
"verbruik": "125000",
"afdeling": "FHIBS",
"geslacht": "vrouw",
"verbruikPercentage": "22.7%"
},
"30": {
"voornaam": "Germain",
"achternaam": "Huisken",
"verbruik": "180000",
"afdeling": "JHAF",
"geslacht": "man",
"verbruikPercentage": "32.7%"
},
"5": {
"voornaam": "Nigel",
"achternaam": "Hoek",
"verbruik": "400000",
"afdeling": "Dienst IT",
"geslacht": "man",
"verbruikPercentage": "72.7%"
},
"3": {
"voornaam": "Shelly",
"achternaam": "Ameschot",
"verbruik": "550000",
"afdeling": "FHICT",
"geslacht": "vrouw",
"verbruikPercentage": "100%"
},
"61": {
"voornaam": "Lucas",
"achternaam": "Bernts",
"verbruik": "60000",
"afdeling": "FHDNP",
"geslacht": "man",
"verbruikPercentage": "10.9%"
},
"33": {
"voornaam": "Dana",
"achternaam": "Blokhuizen",
"verbruik": "150000",
"afdeling": "FYDES",
"geslacht": "vrouw",
"verbruikPercentage": "27.3%"
},
"23": {
"voornaam": "Hidde",
"achternaam": "Brandenborg",
"verbruik": "250000",
"afdeling": "FHKEE",
"geslacht": "man",
"verbruikPercentage": "45.5%"
},
"28": {
"voornaam": "Noor",
"achternaam": "Baek",
"verbruik": "200000",
"afdeling": "FOSO",
"geslacht": "vrouw",
"verbruikPercentage": "36.4%"
},
"26": {
"voornaam": "Max",
"achternaam": "den Diepenbroek",
"verbruik": "200000",
"afdeling": "FLOS",
"geslacht": "man",
"verbruikPercentage": "36.4%"
},
"27": {
"voornaam": "Eulalie",
"achternaam": "Kaszenborgh",
"verbruik": "200000",
"afdeling": "FLOT",
"geslacht": "vrouw",
"verbruikPercentage": "36.4%"
},
"32": {
"voornaam": "Clarence",
"achternaam": "Dolderman",
"verbruik": "175000",
"afdeling": "FDOO",
"geslacht": "man",
"verbruikPercentage": "31.8%"
},
"41": {
"voornaam": "Regie",
"achternaam": "Baankreise",
"verbruik": "125000",
"afdeling": "FHK",
"geslacht": "vrouw",
"verbruikPercentage": "22.7%"
},
"19": {
"voornaam": "Ingeborg",
"achternaam": "Aart",
"verbruik": "350000",
"afdeling": "MARCOM",
"geslacht": "vrouw",
"verbruikPercentage": "63.6%"
},
"47": {
"voornaam": "Diederik",
"achternaam": "Baajens",
"verbruik": "100000",
"afdeling": "FSH",
"geslacht": "man",
"verbruikPercentage": "18.2%"
},
"16": {
"voornaam": "Fien",
"achternaam": "Apenhorst",
"verbruik": "350000",
"afdeling": "FHTL",
"geslacht": "vrouw",
"verbruikPercentage": "63.6%"
},
"62": {
"voornaam": "Dick",
"achternaam": "Boeseken",
"verbruik": "60000",
"afdeling": "FHV",
"geslacht": "man",
"verbruikPercentage": "10.9%"
},
"48": {
"voornaam": "Danielle",
"achternaam": "Bello",
"verbruik": "100000",
"afdeling": "FHPM",
"geslacht": "vrouw",
"verbruikPercentage": "18.2%"
},
"70": {
"voornaam": "Bertus",
"achternaam": "Aelberdink",
"verbruik": "30000",
"afdeling": "FHHRM",
"geslacht": "man",
"verbruikPercentage": "5.5%"
},
"34": {
"voornaam": "Manfred",
"achternaam": "Cassenbarg",
"verbruik": "150000",
"afdeling": "FHPEG",
"geslacht": "man",
"verbruikPercentage": "27.3%"
},
"29": {
"voornaam": "Jinny",
"achternaam": "Bleeken",
"verbruik": "200000",
"afdeling": "FHSOC",
"geslacht": "vrouw",
"verbruikPercentage": "36.4%"
},
"49": {
"voornaam": "Teresa",
"achternaam": "Bresthuis",
"verbruik": "100000",
"afdeling": "FPZ",
"geslacht": "vrouw",
"verbruikPercentage": "18.2%"
},
"12": {
"voornaam": "Mariska",
"achternaam": "Borchert",
"verbruik": "395000",
"afdeling": "FHTNW",
"geslacht": "vrouw",
"verbruikPercentage": "71.8%"
},
"15": {
"voornaam": "Leo",
"achternaam": "Baggerman",
"verbruik": "375000",
"afdeling": "FHENG",
"geslacht": "man",
"verbruikPercentage": "68.2%"
},
"56": {
"voornaam": "Marijn",
"achternaam": "Dierkinck",
"verbruik": "75000",
"afdeling": "FHTEL",
"geslacht": "man",
"verbruikPercentage": "13.6%"
},
"6": {
"voornaam": "Berry",
"achternaam": "Backer",
"verbruik": "400000",
"afdeling": "FHBET",
"geslacht": "man",
"verbruikPercentage": "72.7%"
},
"50": {
"voornaam": "Frederieke",
"achternaam": "Hauser",
"verbruik": "100000",
"afdeling": "FHAUT",
"geslacht": "vrouw",
"verbruikPercentage": "18.2%"
},
"14": {
"voornaam": "Marg",
"achternaam": "Bouwhuis",
"verbruik": "375000",
"afdeling": "FSV",
"geslacht": "vrouw",
"verbruikPercentage": "68.2%"
},
"7": {
"voornaam": "Ebe",
"achternaam": "van de Braak",
"verbruik": "400000",
"afdeling": "DHFZ",
"geslacht": "man",
"verbruikPercentage": "72.7%"
},
"10": {
"voornaam": "Jorrit",
"achternaam": "Grootendorst",
"verbruik": "400000",
"afdeling": "DPO",
"geslacht": "man",
"verbruikPercentage": "72.7%"
},
"4": {
"voornaam": "Desiree",
"achternaam": "van der Kuil",
"verbruik": "400000",
"afdeling": "FCVB",
"geslacht": "vrouw",
"verbruikPercentage": "72.7%"
},
"18": {
"voornaam": "Chandni",
"achternaam": "de Kleijn",
"verbruik": "350000",
"afdeling": "DFIN",
"geslacht": "vrouw",
"verbruikPercentage": "63.6%"
}
}
编辑:
function compareFunction(a, b)
{
var verbruikA = parseInt(a.verbruik);
var verbruikB = parseInt(b.verbruik);
if (verbruikA < verbruikB)
{
return -1;
}
else if (verbruikA > verbruikB)
{
return 1;
}
else
{
return 0;
}
}
$(document).ready( function() {
$.ajax({
url:"wifi_data.json",
dataType: "json",
success: function(data)
{
var item = [];
for (var i in data)
{
item.push(data[i]);
}
$("#container").html("<h1 id='tittel'>Top Wifi Downloaders</h1><div id='vakman'></div><p>Man</p><div id='vakvrouw'></div><p>Vrouw</p>");
}
item.sort([compareFunction]);
});
});
答案 0 :(得分:1)
首先:不保证订购Javascript对象。不要依赖它可能显示的任何感知排序行为,这取决于javascript引擎的实现,并且可以在不事先通知的情况下进行更改。
因此,请使用数组,并将您的密钥作为字段放在对象中。 e.g。
var arr = [
{
"id": 46,
"voornaam": "Sergio",
"achternaam": "Bloemenouw",
"verbruik": "100000",
"afdeling": "FHACI",
"geslacht": "man",
"verbruikPercentage": "18.2%"
},
{
"id": 25,
"voornaam": "Chayenne",
"achternaam": "Aalberink",
"verbruik": "200000",
"afdeling": "FHEHT",
"geslacht": "vrouw",
"verbruikPercentage": "36.4%"
}
]
现在,请看这个链接:Array.prototype.sort() - Javascript | MDN
语法为:
arr.sort([compareFunction])
如果你没有指定compareFunction,它会做一个简单的>
比较,对于数字来说这很明显,对于字符串,它会进行词法比较。对象没有定义的行为,对对象数组进行排序不会做任何事情。
所以你只需要定义一个compareFunction
:
function compareFunction(a, b) {
var verbruikA = parseInt(a.verbruik);
var verbruikB = parseInt(b.verbruik);
if (verbruikA < verbruikB) {
return -1;
} else if (verbruikA > verbruikB) {
return 1;
} else {
return 0;
}
}
并致电:
arr.sort(compareFunction);
更新: 如果您无法控制JSON数据的来源,那么只需遍历JSON对象并将它们全部添加到数组中,然后使用该数组对排序后的数据进行排序和存储:
var arr = [];
for (var i in data) {
arr.push(data[i]);
}