簡體   English   中英

如何對JSON數組進行排序?

[英]How can I sort my JSON array?

如何通過它的值以正確的順序輸出這個JSON元素?

var json = { 
    "message": {
        "90": "Adidas", 
        "2": "Armani", 
        "89": "Casio", 
        "1": "Diesel", 
        "72": "DKNY", 
        "88": "Fossil", 
        "4": "Hamilton", 
        "6": "Luminox", 
        "99": "Michael Kors", 
        "968": "Mont Blanc Pens", 
        "3": "Nixon", 
        "959": "Nooka", 
        "92": "Seiko", 
        "91": "Tendence", 
        "7": "Tissot" 
    } 
};

var str = '';
for (var i in json.message) {
    str += json.message[i]+'\n';
}
alert(str);

它按以下順序發出警報 -

柴油機
阿瑪尼
尼克松
漢密爾頓
LUMINOX
DKNY
化石
卡西歐
阿迪達斯
趨勢
精工
邁克爾科爾斯
Nooka的
勃朗峰筆

但我想按順序排列

阿迪達斯
阿瑪尼
卡西歐
柴油機
DKNY
化石
漢密爾頓
LUMINOX
邁克爾科爾斯
勃朗峰筆
尼克松
Nooka的
精工
趨勢
天梭

任何人都可以建議我采取什么方法來達到正確的順序?

任何幫助將不勝感激!

假設您希望按字母順序列出元素的值:

var values = [];
for(var i in json.message) {
   values.push(json.message[i]);
}
var str = values.sort().join('\n');

更新

要形成按其(字符串)值排序的鍵值對數組:

var values = [];
for(var i in json.message) {
   values.push({ key: i, value: json.message[i] });
}
values.sort(function(a, b) { return a.value.localeCompare(b.value); });
var str = values.map(function (kvp) { return kvp.value; }).join('\n');
var message = object.message;
var brands = Object.keys(message)
               .map(function(key) { return message[key]; })
               .sort();

alert(brands.join('\n'));

為每個索引添加前導0。 例如:

var json = { 
    "message": {
        "090": "Adidas", 
        "02": "Armani", 
        "089": "Casio", 
        "01": "Diesel", 
        ...

使用JS庫unexcore.js非常簡單,只需:

json.message=_.sortBy(json.message,function(i){return i;})

您可以通過這種方式對其進行排序,這是基於值的排序:

function sortJsonMap(data){

var values = [];
var keys = [];

for(var i in data) {
   keys.push(i);
   values.push(data[i]);                     
}
values.sort();  
var map = new Object();
for(var i in values) {
     map[keys[i]]=values[i];
}
return map;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM