我有一个列表框填充我的页面上的列表框。填充它的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
。