首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对填充Chrome列表框的数组/对象/散列进行排序

对填充Chrome列表框的数组/对象/散列进行排序
EN

Stack Overflow用户
提问于 2013-01-10 08:42:28
回答 1查看 137关注 0票数 0

我有一个列表框,它填充了我页面上的一个列表框。填充它的javascript散列看起来很像这样:

代码语言: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作为键,该数组作为值(希望这是有意义的)。这是最好的方法吗?由于框架和现有代码的原因,我必须使用这种结构。

EN

回答 1

Stack Overflow用户

发布于 2013-01-10 09:54:37

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

代码语言:javascript
运行
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14249030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档