排序数组/对象/哈希是填充Chrome列表框

Sorting array/object/hash that is populating Chrome Listbox

本文关键字:Chrome 列表 填充 哈希 数组 对象 排序      更新时间:2023-09-26

我有一个列表框填充我的页面上的列表框。填充它的javascript哈希看起来像这样:

wiget_cont = ({"39":{"name":"astronaut","id":"39","weight":"189"},
               "37":{"name":"corgi","id":"37","weight":"10"},
               "49":{"name":"zoologist","id":"49","weight":"313"}});

在ie和firefox中,列表框根据name键值的字母顺序填充。当然,chrome对数字键进行排序,所以我的列表框都是向后填充的。

我已经尝试将哈希的第二部分取出(如所有以"name"开头的对象)。id显然在键和散列中都有使用。我的想法是提供一个对象数组与所有的值对象,然后排序的名称。然后使用该对象数组中的id作为键,并将该数组作为值(希望这有意义)创建一个新的散列。这是最好的方法吗?由于框架和现有的代码,我必须使用这个结构,进出

您可以使用Object.keys获取数组,然后按名称排序并在

之后迭代它
var wiget_cont = ({"39":{"name":"astronaut","id":"39","weight":"189"},
               "37":{"name":"corgi","id":"37","weight":"10"},
               "49":{"name":"zoologist","id":"49","weight":"313"}});
var keys = Object.keys(wiget_cont).sort(function (a, b) {return wiget_cont[a].name>wiget_cont[b].name;}),
    i = 0;
for (;i<keys.length;++i) { /* wiget_cont[keys[i]] ... */ }

如果您不想使用>进行字符串比较,请查看.localeCompare