2014-09-11 3 views
0

"verbruik"로 분류 된 JSON 파일에서 내 통계를 표시하고 싶습니다. 이제 배열을 정렬하는 방법을 알고 있는데 배열에 정보가 하나있는 경우 1 = "12313", 3 = "2124"과 같습니다.JSON 배열을 정렬하는 방법

내가 변수에 전체 JSON 파일을 넣었습니다

가 : 또한

for(var index in data) 
        { 
         var item = data[index]; 

사람이 매우 간단이 설명 할 수 :

for (var index in data) 

을 당신이 사용하는 3 개 개의 매개 변수를 얻을 수 있습니다 알고 : 값, 키 및 색인. 그러나 내 코드가 어떤 것이 값, 키 또는 인덱스인지 어떻게 알 수 있습니까? 인덱스를 넣을 때와 마찬가지로 인덱스가 아니라 키로 인식합니다.

참고 : 이해하고 JQUERY 및 JSON을 배우려고 노력

I'am는 나에게 자비를 베풀어주십시오.

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]); 
    }); 
}); 
+1

json의 출처를 변경할 수 있습니까? 현재 정렬 할 수없는 객체이며 객체 배열을 사용하면 더 간단합니다. 또는 객체를 배열에 매핑 한 다음 정렬하는 것이 어렵지 않습니다. – charlietfl

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in – melancia

+0

안녕하세요 Charlietfl I 've JSON 파일 전체를 변수에 넣으십시오. 편집을 참조하십시오. @Melancia 감사합니다. 지금 읽어 보겠습니다. – user4024249

답변

1

첫째는 : 자바 스크립트 객체는 주문 보장되지 않습니다. 표시 될 수있는 인식 된 주문 행위에 의존하지 마십시오. 이는 자바 스크립트 엔진의 구현에 따라 다르며 예고없이 변경 될 수 있습니다.

그래서 배열을 사용하여 키를 객체의 필드로 지정하십시오. 예 : Array.prototype.sort() - Javascript | MDN

구문은 다음과 같습니다 : 이제

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%" 
    } 
] 

은이 링크를 보면

arr.sort([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); 

UPDATE : 당신은 JSON 데이터 소스의 제어가없는 경우, 단지 루프

그래서 당신은 단지 compareFunction를 정의 할 필요가 JSON 객체를 통해 모두 배열에 추가하고 정렬을 사용하여 정렬 된 데이터를 정렬하고 저장합니다.

var arr = []; 
for (var i in data) { 
    arr.push(data[i]); 
} 
+0

OP가'verbruik' 속성으로 정렬하려고합니다. – charlietfl

+0

@charlietfl 이것은 쉬운 수정입니다.) – Populus

+0

안녕하세요, 너무 늦게 답변 해 주셔서 죄송합니다. 모든 자료를 읽고 이해하려고했습니다. 감사합니다. – user4024249

관련 문제