Javascript 按降序键对数组进行排序 Google Chrome

标签 javascript arrays google-chrome sorting

我有一个数组,需要按键按降序对它进行排序。 在 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})

因此在 Firefox 中它会返回正确的结果

[["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 引擎尝试将这些操作数转换为数字,几乎肯定会导致 NaNNaN - NaNNaN,这不是排序比较器回调应该返回的内容之一。

我怀疑您想按从属数组中的第一个条目进行排序,如下所示:

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)})

关于Javascript 按降序键对数组进行排序 Google Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759290/

相关文章:

PHP MySQLi fetch "array push"覆盖数据

google-chrome - Chrome 扩展 : Unchecked runtime. lastError:无法解析或设置名为 "ASP.NET_SessionId"的 cookie

javascript - 如何将 Google 字体添加到 VueJS 组件?

javascript - HTML5和JS将多个图像拖放到特定位置

javascript - 如何在 JavaScript 中获取单词或索引后的子字符串?

javascript - 在我的浏览器中加载后如何从我的本地机器测试网页

c - 为什么指向数组的指针在作为参数传递给具有数组类型参数的函数之前需要转换?

ruby - 如何 "unflatten"一个 Ruby 数组?

google-chrome - 如何在 Windows 中为 Dart 以选中模式启动 Dartium/Chrome?

google-chrome - 在加载前用不同的 url 替换 url