按字母顺序对javascript填充的选择列表排序
我试图对我的javascript弹出选择列表进行排序,我搜索了这个网站上的所有其他帖子,但我无法让它工作 下面是我的javascript,它自动从SQL db中的数据填充选择列表:按字母顺序对javascript填充的选择列表排序,javascript,Javascript,我试图对我的javascript弹出选择列表进行排序,我搜索了这个网站上的所有其他帖子,但我无法让它工作 下面是我的javascript,它自动从SQL db中的数据填充选择列表: for (clientKey in clientProjectsHash) { //alert("client:" + clientKey + ", name: " + clientProjectsHash[clientKey].name); clientSelect.
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;
}
}
}
试着这样做:
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;
}
}
}
var list=[];
用于(输入客户端项目SHASH)
列表。按(键);
list.sort();
对于(变量i=0;i 0){
selectedClientId=clientKey;
}
}
}
尝试以下方法:
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;
}
}
}
var list=[];
用于(输入客户端项目SHASH)
列表。按(键);
list.sort();
对于(变量i=0;i 0){
selectedClientId=clientKey;
}
}
}
我们开始吧
您希望按对象的可枚举键的值对其进行排序
- 可以使用获取对象的可枚举属性
- 然后,可以使用将每个关键点转换为其在对象中的值
(在这两种浏览器中,该链接都有一个适用于旧浏览器的垫片)
- 然后你可以对它们调用普通函数
示例
假设你的物体是
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();
你的情况:
在你的情况下,这可能是
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();
我们开始吧
您希望按对象的可枚举键的值对其进行排序
- 可以使用获取对象的可枚举属性
- 然后,可以使用将每个关键点转换为其在对象中的值
(在这两种浏览器中,该链接都有一个适用于旧浏览器的垫片)
- 然后你可以对它们调用普通函数
示例
假设你的物体是
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();
你的情况:
在你的情况下,这可能是
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();
clientProjectsHash
是一个数组
还是一个对象
?没关系,从你的代码中看,它是一个对象
。对象没有.sort()
方法。这就是问题所在。给我一秒钟,我将推动一项工作,您可以将所有键拉入一个数组,对数组进行排序,然后在排序后进行检查。仅供将来参考array.sort()
返回新数组并修改原始数组。参见var a=['b','c','a'];a、 排序();控制台日志(a)
gives.Thank,@pebbl我觉得它没有动原始数组。@JasonNichols不用担心,它是一个烦人的函数,不能达到你的期望:)是clientProjectsHash
一个数组
或对象
?没关系,从你的代码看,它是一个对象
。对象没有.sort()
方法。这就是问题所在。给我一秒钟,我将推动一项工作,您可以将所有键拉入一个数组,对数组进行排序,然后在排序后进行检查。仅供将来参考array.sort()
返回新数组并修改原始数组。参见var a=['b','c','a'];a、 排序();控制台日志(a)
gives.Thank,@pebbl I给人的印象是它没有触及原始数组。@JasonNichols不用担心,这是一个无法达到预期效果的恼人函数:)