javascript - 为什么 JavaScript 中的 ".sort()"将非常小的数字排序为非常大的数字?

标签 javascript sorting numbers

如果我运行“[6,3,8,7,5,2,1,9,4,0].sort()”我得到“[0,1,2,3,4,5 ,6,7,8,9]"作为您期望的输出。它将数字从小到大排序。但是如果我运行“[2,3,1,4e-20].sort()”,我会得到“[1,2,3,4e-20]”作为输出。为什么“.sort()”函数将“4e-20”视为大于“3”?即使您运行“3>4e-20”,您也会得到“true”作为输出,这表明 JavaScript 确实意识到“4e-20”是一个非常小的数字。但是排序函数将其视为一个非常大的数字。为什么是这样?有什么办法可以改变它,还是我只需要编写自己的函数?

最佳答案

来自 MDN Array.sort :

“默认排序顺序是根据 string Unicode 代码点。”

然后继续“[要]比较数字而不是字符串,比较函数可以简单地从 a 中减去 b。以下函数将对数组进行升序排序”:

function compareNumbers(a, b) {
  return a - b;
}

关于javascript - 为什么 JavaScript 中的 ".sort()"将非常小的数字排序为非常大的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24344939/

相关文章:

javascript - 如何滚动到页面中的最后一个元素 <li>

algorithm - 在 O(n) 中运行的数组 "maximum difference"算法?

JavaScript 将 NUMBER.MIN_VALUE 与 0.0 进行比较返回 false

python - 数字列表上所有可能的操作组合以查找特定数字

java - 包名中的数字 Android Studios

javascript - JSON 数据未通过 put 请求更新

javascript - 使用鼠标动态调整 css 网格布局中的列大小

javascript - TypeScript:属性 'propertyName' 在类型 'Function' 上不存在

Python:使用 lambda 函数按照用户定义的对象的属性进行排序

algorithm - 快速排序的基本困惑