按字母顺序排序javascript填充的选择列表

sort javascript populated select list by alphabetical order

本文关键字:填充 选择 列表 javascript 排序 顺序      更新时间:2023-09-26

我正在尝试排序我的javascript填充选择列表和我搜索了所有其他的帖子在这个网站上,但我不能得到它的工作…

这是我的javascript,自动填充从一个数据在SQL数据库中的选择列表:

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;
        }
    }
}

开始了

你想要一个对象的可枚举键按其值排序。

  • 您可以使用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();

试试这样:

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;
            }
        }
}