2

この質問に似た別の投稿をいくつか見ましたが、私のシナリオでは機能せず、これを解決する方法がわかりません ( Sort a 2D array by the second valueなど)

JavaScript 内で直面している問題について説明します。

サードパーティ製品内でチャートを作成するために使用している 2 つの配列があります。次の変数があります。

label["A株", "B株", "C株", "D株"]

値["200", "1000", "900", "800"]

これを2D配列にしたい

sorted["B株, 1000","C株, 900", "D株, 800", "A株, 200"]

できれば数値でソートしたいです。問題は、上記の質問内でソリューションを使用すると、値が他の値とのみ比較されることです。配列内に既に格納されている各値を調べるには、これが必要です。

先週どこかで別の非常に長い曲がりくねった道を見つけましたが、100、1000 などの値を並べてソートしていました。金曜日に怒り狂ってコードを削除しました。

そこにいる親切な魂が新しいコーダーを助けてくれることを望んでいました。O 値は文字列として入力されるため、int に変換する必要があります。

配列には無制限のエントリがあり、これらを正しく並べ替えたら、上位 10 個を保持し、残りを合計でグループにグループ化する必要があります。つまり、11 個のエントリがあります。ただし、それに取り組む前にソートする必要があります。

前もって感謝します。

4

1 に答える 1

4

これを2D配列にしたい

sorted["Stock B, 1000","Stock C, 900", "Stock D, 800", "Stock A, 200"]

これは 2D 配列ではなく、文字列の 1 次元配列です。これは 2D 配列になります。

sorted = [["Stock B", 1000], ["Stock C", 900], ["Stock D", 800], ["Stock A", 200]];

...次のように 2 番目の値で並べ替えることができます。

sorted.sort(function(a, b) {
    var avalue = a[1],
        bvalue = b[1];
    if (avalue < bvalue) {
        return -1;
    }
    if (avalue > bvalue) {
        return 1;
    }
    return 0;
});

ただし、オブジェクトの 1 次元配列を使用した方がよい場合があります。

sorted = [
    {name: "Stock B", quantity: 1000},
    {name: "Stock C", quantity: 900},
    {name: "Stock D", quantity: 800},
    {name: "Stock A", quantity: 200}
];

...次のように並べ替えることができます。

sorted.sort(function(a, b) {
    var avalue = a.quantity,
        bvalue = b.quantity;
    if (avalue < bvalue) {
        return -1;
    }
    if (avalue > bvalue) {
        return 1;
    }
    return 0;
});
于 2013-03-25T10:04:20.107 に答える