我该如何对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
化石
卡西欧
阿迪达斯
趋势
精工
迈克尔科尔斯
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; 

}