2

私はデータ視覚化ライブラリ 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() が信頼できない理由を知りたいだけです。

4

1 に答える 1

2

sort()関数は、カスタム順序付け関数なしで呼び出された場合、配列内のすべてを文字列と見なします。

唯一の例外は ですundefined。これは、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

于 2012-06-27T02:43:53.080 に答える