如何通过它的值以正确的顺序输出这个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 :(得分: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');
答案 1 :(得分:1)
var message = object.message;
var brands = Object.keys(message)
.map(function(key) { return message[key]; })
.sort();
alert(brands.join('\n'));
答案 2 :(得分:0)
为每个索引添加前导0。例如:
var json = {
"message": {
"090": "Adidas",
"02": "Armani",
"089": "Casio",
"01": "Diesel",
...
答案 3 :(得分:0)
使用JS库underscore.js非常简单,只需:
json.message=_.sortBy(json.message,function(i){return i;})
答案 4 :(得分:0)
您可以通过这种方式对其进行排序,这是基于值的排序:
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;
}