如果我运行“[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/