2013-10-14 154 views
0

我想对按照(键,值)关联的对象进行排序 我能够根据key存储值,但无法根据value对它们进行排序使用内置的sort()函数作为关联数组的情况。根据js中的值对对象进行排序

var usernames = {}; 

username[1] = "ZNAME"; 
username[2] = "BNAME"; 
username[3] = "ANAME"; 
username[4] = "TNAME"; 
username[5] = "KNAME"; 
username[5] = "YNAME"; 

$.each(usernames,function(key, value){ 
    alert(key + " : " + value); 
}) 

请告诉方法与我的更新JSFIIDLE

DEMO

+5

对象没有特定的顺序,你想数组... – elclanrs

回答

1

排序您不能对一个对象,你必须做出一个数组。例如:

var usernamesArray = [ 
    {key:1,username:"ZNAME"}, 
    {key:2,username:"BNAME"}, 
    ... 
    {key:5,username:"YNAME"} 
]; 
var sortedUsernamesArray=usernamesArray.sort(function(a,b){ 
    // 
    return (a.username>b.username)?1:-1; 
}); 

现场演示:http://jsfiddle.net/GrD4v/

注:此处不需要jQuery的。

[编辑]构建用户名数组有几种不同的方法。一个简单的一个:

var usernamesObject = {}; 
var usernamesArray = []; 

usernamesObject[1] = "ZNAME"; 
usernamesObject[2] = "BNAME"; 
usernamesObject[3] = "ANAME"; 
usernamesObject[4] = "TNAME"; 
usernamesObject[5] = "KNAME"; 
usernamesObject[6] = "YNAME"; 

for (var i=1;i<7,i++) { 
    usernamesArray.push({key:i,username:usernamesObject[i]}); 
} 
+0

感谢您的回答,您可以请告诉如何遍历用户名来获取密钥和用户名 – softvar

+0

@VarunMalhotra编辑答案 – Christophe

1
var username = []; 

username[0] = "ZNAME"; 
username[1] = "BNAME"; 
username[2] = "ANAME"; 
username[3] = "TNAME"; 
username[4] = "KNAME"; 
username[5] = "YNAME"; 

username.sort(); 

$.each(username,function(key, value){ 
    alert(key + " : " + value); 
}) 
相关问题