排序数组/对象/哈希是填充Chrome列表框
Sorting array/object/hash that is populating Chrome Listbox
我有一个列表框填充我的页面上的列表框。填充它的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
。
相关文章:
- 播放列表在IE和Chrome中无法正确显示
- 获取Chrome pageAction图标以显示JSON中的URL列表
- 为什么从位置哈希中选择下拉列表在 Chrome 上有效,但不适用于 Firefox、IE 或 Safari
- 如何检查我的 chrome 扩展程序的 if 语句中的单词列表
- 未在IE中填充的列表框在FF和Chrome中工作
- 通过Javascript从网页访问Chrome插件列表
- 未在火狐浏览器的选择列表中选择值(适用于chrome,safari,opera)
- Chrome更改正则表达式并可以'与下拉列表中的值不匹配
- 我可以从我的Chrome扩展中获得可用的区域设置翻译列表吗
- Mozilla和IE修改了我的下拉列表,但chrome没有;t
- onChange不在Safari的下拉列表中启动,适用于IE、FF、Chrome和;歌剧
- 单击下拉列表更改在chrome或opera上不起作用的输入值
- Chrome在新窗口中打开链接列表,而不是选项卡
- 停止chrome显示下拉列表时,单击一个选择
- 为什么这个下拉列表的排序工作在Internet Explorer,而不是在Chrome
- Chrome在历史记录列表中不包含window.open("","_self")
- Chrome扩展重定向到列表页面刷新的内容
- 所有网页浏览器在chrome扩展的列表
- 展开嵌套无序列表和水平显示在IE/Chrome/FF
- 排序数组/对象/哈希是填充Chrome列表框