Javascript按键降序对数组进行排序 谷歌浏览器.
Javascript sort array by key descending Google Chrome
我有一个数组,需要按键降序排序。在Firefox中一切正常,但在Chrome中它以原始顺序显示
[["0", 0], ["1", 0.9], ["2", 597.5344192965547], ["3", 991.0326954186761], ["4", 1257.2580315846578], ["5", 1293.5250901880618], ["6", 2197.1091224116512], ["7", 2225.0422585266947], ["8", 3964.1307816747044], ["9", 6914.072436146399]]
这是我正在使用的代码
sortable.sort(function(a,b){return b-a})
所以在火狐中它返回正确的结果
[["9", 6914.072436146399], ["8", 3964.1307816747044], ["7", 2225.0422585266947], ["6", 2197.1091224116512], ["5", 1293.5250901880618], ["4", 1257.2580315846578], ["3", 991.0326954186761], ["2", 597.5344192965547], ["1", 0.9], ["0", 0]]
但是在谷歌浏览器中,它只是显示相同的内容
你有一个数组数组。假设sortable
引用外部数组,则排序函数最终会在数组实例上使用-
。例如,在某个时候,当您调用 sort
时,您的排序函数与数组一起调用 ["0", 0]
和 ["1", 0.9]
。因此,您可以在该函数中有效地执行此操作:
return ["0", 0] - ["1", 0.9];
在这两个操作数上使用-
将导致 JavaScript 引擎试图将这些操作数转换为数字,几乎肯定会导致NaN
。 NaN - NaN
是NaN
,这不是排序比较器回调应该返回的内容之一。
我怀疑您想按从属数组中的第一个条目进行排序,如下所示:
sortable.sort(function(a,b){return b[0]-a[0]})
(请注意每个[0]
。这将获取作为每个从属数组中第一个条目的字符串,并将它们传递给-
,这将隐式地将它们强制为数字。如果需要,您也可以明确并强制使用特定的基数:
sortable.sort(function(a,b){return parseInt(b[0], 10) - parseInt(a[0], 10)})
相关文章:
- 为什么可以't我在谷歌浏览器中返回cookie
- 谷歌浏览器没有阅读Jsfidle程序
- Javascript字母选择没有'我不能在谷歌浏览器上工作
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 列出谷歌浏览器中安装的所有扩展程序
- 谷歌浏览器模式正则表达式在使用setCustomValidity动态创建表单时不起作用
- 谷歌浏览器扩展程序画布图标
- 谷歌浏览器控制台,打印图像
- 为什么我的谷歌浏览器扩展程序在谷歌浏览器版本 41.0.2272.89 中不起作用
- 多个 socket.io 客户端连接不起作用(谷歌浏览器,火狐浏览器)
- 对象在谷歌浏览器中没有方法“焦点”
- 谷歌地图API v3自定义光标在谷歌浏览器中的热点
- 我们如何在谷歌浏览器的每个页面上打印表格标题
- 谷歌浏览器中的getUserMedia
- 在谷歌浏览器中,标签之间最快的通信是什么
- 在谷歌浏览器中用程序固定一个标签
- 为什么javascript在谷歌浏览器上不起作用
- 谷歌浏览器中数组的未知/不一致的排序行为
- 如何停止json数据自动排序在谷歌浏览器
- Javascript按键降序对数组进行排序 谷歌浏览器.