私はこの質問から始めました:オブジェクトの JS オブジェクトをソートする方法は?
2 つのコメントから、オブジェクトの Javascript オブジェクト (単なる 2D オブジェクト) をソートする最良の方法を思いつきました。
data
が 2D オブジェクト変数であると仮定してcustomer
、内部オブジェクトの値で並べ替えます。
まず、次のようにオブジェクトの配列に変換します。
data = $.map(data, function(k, v) {
return [k];
});
次に、次のように並べ替えを行います。
data = data.sort(function(a, b){
return a.customer > b.customer? 1: -1;
});
うまく機能しますが、最初に日付変数で並べ替え、次に顧客変数で並べ替えたいと思います。ソート関数が SQL で機能する方法と同じです ( ...sort by date desc, customer asc;
)。
しかし、私が本当にやりたいことは、実際にはもっと単純です。null
日付の値を並べ替えるときは、との値を区別するだけ!null
です。その結果、すべての null 値がグループ化され、null 以外のすべての値がグループ化されます。
その後、すべての最上位オブジェクトが整頓されているはずcustomer
です。
私はそれがどのように機能するべきだと思うかに基づいて、このアイデアを思いつきました:
data = data.sort(function(a, b){
if (a.fin_date !== null){
return 1;
}
return a.customer > b.customer? 1: -1;
});
それは一種の働きです。すべての値を最初にソートし、null
すべての null 値は正しいアルファベット順ですが、他のすべてのfin_date
値 ( !null1
) はアルファベット順ではありません。それらはどちらに従っても順番に並んでいませんfin_date
。fin_date
等しくないオブジェクトnull
は、特定の順序で表示されません。
それが私の問題です: fin-date
!=のオブジェクトをnull
アルファベット順にする必要があります。
ありがとう!