をソートするには、私は次の形式のオブジェクトの配列を持っています。今度はarr
(これは'item1'
でソートされています)をもう一度並べ替えますが、今度は'item2'
で、今度は'item1'
と同じです。最後の配列は次のようになります。Javascriptのソートカスタムコンパレータ機能ソートされた配列
arr = [
{ 'item1' : 1234, 'item2' : 'apple' },
{ 'item1' : 1234, 'item2' : 'banana' },
{ 'item1' : 1234, 'item2' : 'custard' },
{ 'item1' : 2156, 'item2' : 'melon' },
{ 'item1' : 4345, 'item2' : 'asparagus' }
];
私はそうのような第二の場合のソート関数を記述しようとした:
arr.sort(function(a,b){
if(a.item1 === b.item1){
return a.item2 > b.item2 ? 1 : a.item2 < b.item2 : -1 : 0;
}
});
私は、最終的なソートされた配列を取得するために、1つの関数に2種類を組み合わせることができしかし、ちょうど'item1'
またはちょうど'item2'
で並べ替える必要がある場合があります。
あなたはITEM1、ITEM2でソートするために管理している場合、それらの両方が、その後、あなたは正確に何を求めていますか? –
そのように、私は "new sortByItem2(new sortByItem1(arr))"と言うデコレータパターンを書いています。 sortByItem1(arr)やsortByItem2(arr)や "new sortByItem1(new sortByItem2(arr))"のように使うこともできます。 – fenderplayer