javascript - 为什么 numberArray.sort() 在 JavaScript 中不能正确排序数字?

标签 javascript sorting

我正在练习数据可视化库 d3.js,并且使用与以下内容相同的随机数据生成器:

function generateRandomData() {
    var i,
        data = [];
    for (i = 0; i < 100; i += 1) {
        data.push(Math.random() * 100);
    }
    return data;
}

我存储该值并尝试对其进行排序,如下所示:

var data = generateRandomData();
data.sort();

不幸的是,排序后的数据集并未完全排序 - 有些值实际上是不正确的。例如,我会有 [12, 15, 18, 21, 3, 18 ...] 等数字。排序函数不准确的原因是什么?

注意:我找到了一个正确的解决方案,解决了我的问题:

data.sort(function (a, b) { return b - a; });

我只是想知道为什么 sort() 不可靠。

最佳答案

sort() 如果在没有自定义排序函数的情况下调用该函数,则该函数会将数组中的所有内容视为字符串。

唯一的异常(exception)是未定义,它从 Javascript 1.2 开始始终是排序数组中的“最大”项。

[void(0),342,4.5,"ahahaha",null,"zzz", "nen", "nup", 0/0, "KDSFL", "-sdfh",-3324, "-%",Array.prototype.sort,window,Array.zzz,"[oooooo]", "undefined",0].sort()

引用:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

关于javascript - 为什么 numberArray.sort() 在 JavaScript 中不能正确排序数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218670/

相关文章:

javascript - 使用 jQuery 在主 div 中重新排列 div

javascript - 附加到预先输入

python - 如何按字母顺序对多对多 django-admin 框中的值进行排序?

python - 冒泡排序已经排序的列表

python - 如何根据数值的顺序对包含组合数值和文本值的列表进行排序

将 char 指针数组的值复制到结构中

javascript - 如何将 `<div>` 内的 anchor 反转到底部而不是顶部?

javascript - 如何将 JsonResponse 与 ajax 结合使用

javascript - 我需要一个 JavaScript 数组来保存指向图像的链接,以便在图像源中工作和使用

php - 按键对数组排序