javascript - Firefox 对数组排序错误

标签 javascript

我期望下一个片段将所有内容保留在其索引中,但将特定项目排序到前面:

const sorted = ["AUS", "GBR", "GER", "USA", "ZAF"].sort(code => code === "GBR" ? -1 : 0);

console.log(sorted);

我只使用第一个元素,因为我不进行比较,只需关心第一个元素是否是 GBR ,将其放在前面,否则,就让它留在现在的位置。

它在 Chrome 上运行良好,但不知为何 Firefox 却让一切保持原来的样子。或者如果我这样做? -1 : 1 ,它放置 GBR到前面,但颠倒其余项目的顺序。

我做错了什么?

最佳答案

正如 deceze 在评论中所说:sort回调必须采用两个参数。你只看第一个参数。如果“GBR”作为第二个参数传递,则永远不会检查它,并且结果对于所有意图和目的都是随机的。

你只需要看看第二个参数:

const sorted = ["AUS", "GBR", "GER", "USA", "ZAF"].sort((c1, c2) => c1 === "GBR" ? -1 : c2 === "GBR" ? 1 : 0);

console.log(sorted);

关于javascript - Firefox 对数组排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076924/

相关文章:

javascript - 从链接加载 JSON 以在范围内使用

javascript - 单击 Bootstrap 模式中的按钮来获取启动元素?

javascript - 我可以检查 pin 码是否由使用 ASCII 的数字组成吗?

java - 如何在 HtmlUnit 中执行 JavaScript 而不运行页面脚本

javascript - Angular 模板未显示在主页上

javascript - 为什么我的查询结果不会显示在 Express 上的表中?

javascript - Phonegap - Xcode 中的 Javascript 调试

javascript - 如何从 Blob 到 ArrayBuffer

php - Chrome 和 Firefox 处理 JavaScript/HTML 的方式不同

javascript - Google Maps API v3 - 地理编码器结果有边界问题