1. 配列には、並べ替えに直接使用できるメソッドがすでに 2 つあります: reverse() と sort()。
reverse() メソッドと sort() メソッドの戻り値は、ソートされた配列です。 reverse() メソッドは配列項目の順序を逆にします:
var values=[1,2,3,4,5]; values.reverse(); alert(values); //5,4,3,2,1
デフォルトでは、sort() メソッドは配列を昇順にソートし、sort() メソッドは toString() 変換メソッドを呼び出します。次に、文字列を比較して並べ替え方法を決定します。配列内の各項目が数値であっても、sort() メソッドは文字列を比較します。
var values = [0,1,5,10,15]; values.sort(); alert(values); //0,1,10,15,5
したがって、sort() メソッドはパラメータとして比較関数を受け取ることができます。
function compare(value1,value2){ if (value1 < value2){ return -1; }else if (value1 > value2){ return 1; }else{ return 0; } }
この比較関数はほとんどのデータ型に適用でき、パラメータとして sort() メソッドに渡すだけです:
var values = [0,1,3,7,9,15]; values.sort(compare); alert(values); //0,1,3,7,9,15
降順ソートも比較関数を通じて生成できます。関数の戻り値を交換するだけです:
function compare (value1, value2){ if (value1<value2){ return 1; }else if { return -1; }else{ return 0; } }
sort() 関数のソート条件は次のとおりです:
パラメーターが 0 より大きい、arr 交換位置の 2 つの隣接する要素
パラメーターが 0 未満、2 つの隣接する要素。 arr の要素は位置を交換しません。
パラメーターは 0 に等しく、arr の 2 つの隣接する要素のサイズは等しいため、比較カスタム関数は数値を返す必要があります。
2. 数値型の場合、または valueOf() メソッドは数値型のオブジェクト型を返します。
より単純な比較関数を使用できます。この関数には、2 番目の値から最初の値を引いた値のみが必要です。