我正在尝试对我的javascript popuplated选择列表进行排序,并且我搜索了该网站上的所有其他帖子,但我无法让它工作......
这是我的javascript,它自动填充SQL db中数据的选择列表:
for (clientKey in clientProjectsHash) {
//alert("client:" + clientKey + ", name: " + clientProjectsHash[clientKey].name);
clientSelect.options[clientSelect.options.length] = new Option(clientProjectsHash[clientKey].name, clientKey);
if(selectedClientId == undefined || selectedClientId == 0) {
if(clientKey > 0) {
selectedClientId=clientKey;
}
}
我试图添加:
clientProjectsHash.sort();
到顶部但不起作用...感谢任何人的帮助!
这是我从数据库中获取第一个客户端ID的另一个函数:
function getInitialClient() {
for (clientKey in clientProjectsHash) {
if(clientKey > 0) {
return clientKey;
}
}
}
答案 0 :(得分:2)
尝试这样的事情:
var list = [];
for(key in clientProjectsHash)
list.push(key);
list.sort();
for(var i=0; i<list.length; i++)
{
clientSelect.options[clientSelect.options.length] = new Option(clientProjectsHash[list[i]].name, clientKey);
if(selectedClientId == undefined || selectedClientId == 0) {
if(clientKey > 0) {
selectedClientId=clientKey;
}
}
}
答案 1 :(得分:2)
我们走了。
您希望按其值对对象的可枚举键进行排序。
您可以使用Object.keys
来获取对象的可枚举属性。
然后,您可以使用Array.map
将每个键转换为对象中的值。
(这两个链接在旧版浏览器中都有垫片)
sort
函数。示例强>
假设您的对象类似于
var obj = {
"a":"Hello",
"b":"World",
"c":"AAAA",
"d":"ZZZZ",
};
var a = Object.keys(obj).map(function(elem){ // Get the keys, and map them
return obj[elem]; // to their value
}).sort(); // then sort
在你的情况下,这就像是
var sortedValues = Object.keys(clientProjectsHash).map(function(elem){ // Get the keys, and map them
return clientProjectsHash[elem]; // to their value
}).sort();