2012-01-19 21 views
4

如何通過它的值以正確的順序輸出這個JSON元素?我如何排序我的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
化石
卡西歐
阿迪達斯
前瞻態勢
精工
Michael Kors的
Nooka的
萬寶龍鋼筆

但我想它在下面爲了

阿迪達斯
阿瑪尼
卡西歐
柴油
DKNY
化石
漢密爾頓
LUMINOX
Michael Kors的
萬寶龍鋼筆
尼克松
Nooka的
精工
前瞻態勢
天梭

任何人都可以建議我採取什麼方法來正確地排列順序嗎?

任何幫助將不勝感激!

+0

對象(不陣列,這只是PHP它使用像關聯數組這樣的東西),雖然大多數JS虛擬機都保留了它們被添加的順序,但沒有任何順序的鍵。但是,由於這不能被依賴,所以你只需要生成一個只包含數值的數組,然後簡單地排序(如其他答案所示)。 –

回答

8

假設要通過其值按字母順序列出的元素:

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'); 
+0

非常感謝@ rich.okelly :)我正在考慮對json對象進行排序,但您的建議也適用。 –

+0

可以保存排序數組的鍵嗎? –

+0

@VikasNaranje查看更新! –

0

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

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

OP按_value按字母順序排列,_不按_index_(鍵)。但即使他們正在討論按索引進行排序,如何將前導零添加到_all_索引有幫助? – nnnnnn

+0

在關聯數組中循環時,某些瀏覽器不會按照添加順序返回鍵。 http://code.google.com/p/v8/issues/detail?id=164 – Janath

+0

我知道。但爲什麼你認爲添加前導零將會有所幫助? – nnnnnn

1
var message = object.message; 
var brands = Object.keys(message) 
       .map(function(key) { return message[key]; }) 
       .sort(); 

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

使用JS庫undescore。JS是很容易的,只是做:

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

您可以通過這種方式對其進行排序,這是一種basied價值觀:

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; 

}