How to output this JSON element in correct order by it's value?
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);
it alerts in the below order -
Diesel
Armani
Nixon
Hamilton
Luminox
DKNY
Fossil
Casio
Adidas
Tendence
Seiko
Michael Kors
Nooka
Mont Blanc Pens
But I want it in below order
Adidas
Armani
Casio
Diesel
DKNY
Fossil
Hamilton
Luminox
Michael Kors
Mont Blanc Pens
Nixon
Nooka
Seiko
Tendence
Tissot
Can any one suggest me what approach I should adopt to get in correct order?
Any help would be greatly appreciated!
Assuming you want the elements listed in alphabetical order by their value:
var values = [];
for(var i in json.message) {
values.push(json.message[i]);
}
var str = values.sort().join('\n');
Update
To form an array of key-value pairs ordered by their (string) value:
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'));
Add a leading 0 to each index. For example:
var json = {
"message": {
"090": "Adidas",
"02": "Armani",
"089": "Casio",
"01": "Diesel",
...
使用JS库unexcore.js非常简单,只需:
json.message=_.sortBy(json.message,function(i){return i;})
You can sort it by this way, this is a sort basied on values :
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;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.