0

最大の正から最大の負の順に並べ替えたいと思います。

目的の出力: (3,2,1,0,-1,-2,-3)、現在の出力: (3,2,1,0,-3,-2,-1)

初期配列:

["-0.87", "0.51", "3.34", "1.58", "2.67", "0.51", "-1.58", "1.91", "-0.86", "-0.42", "0.23", "1.5", "-1.67", "1.9", "-2.88", "-0.63", "1.13", "-1.37", "-0.42", "-0.35", "-0.38", "0.65", "-0.41", "0.49", "1", "-0.14", "-0.07", "2.41", "3.09", "0.85", "0.51", "-0.67", "0.53", "0.98", "-0.88", "0.18", "-0.75", "-0.22", "-0.27", "-2.09", "0.01", "1.14", "-0.64", "-0.53", "3.01", "1.49", "1.56", "0", "0.67", "0.28", "-0.21", "-0.49", "-0.66", "-1.29", "0.67", "-0.76", "0.23"]

ソートコード:

dataPct.sort(d3.descending);

次のように配置します。

["3.34", "3.09", "3.01", "2.67", "2.41", "1.91", "1.9", "1.58", "1.56", "1.5", "1.49", "1.14", "1.13", "1", "0.98", "0.85", "0.67", "0.67", "0.65", "0.53", "0.51", "0.51", "0.51", "0.49", "0.28", "0.23", "0.23", "0.18", "0.01", "0", "-2.88", "-2.09", "-1.67", "-1.58", "-1.37", "-1.29", "-0.88", "-0.87", "-0.86", "-0.76", "-0.75", "-0.67", "-0.66", "-0.64", "-0.63", "-0.53", "-0.49", "-0.42", "-0.42", "-0.41", "-0.38", "-0.35", "-0.27", "-0.22", "-0.21", "-0.14", "-0.07"]

画像: ここに画像の説明を入力

4

1 に答える 1

3

文字列を並べ替えようとしているため、予期しない結果が得られます。引用符で囲まれているため、文字列の配列があることがわかります。

これを修正するには、このスニペットで実行できる数値に文字列を変換する必要があります。

dataPct.forEach(function (d,i) {
  dataPct[i] = +d;
});

hereなどのAPIドキュメントで、文字列を数値に変換することについていくつかの議論があります。

于 2013-09-24T21:19:20.210 に答える