javaScriptの配列は、Arrayオブジェクトのインスタンスです。配列をオブジェクトとして使う利点は、あらかじめ用意されたメソッドが使えることです。
たとえば、sortメソッドを使うと、配列の要素を並び替えることができます。reverseメソッドだと、配列の要素の並び方を逆順にすることができます。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>配列操作</title> <script> function compare(a,b){return a - b;} </script> </head> <body> <script> var weight = new Array(30,40,60,80,20,70,100); weight = weight.sort( compare ); document.write( weight.join(" > ")); </script> </body> </html> |
sortメソッドと比較関数
sortメソッドでは、通常は要素を文字列として昇順に並び替えを行いますが、引数で比較関数を指定すると、内部で比較関数を呼び出して、その結果をもとに数字として並び替えを行うようです。
・・・
いまいち仕組みがよく分かりません。
比較関数は、2つの引数を比較して大小を判断するだけの関数で、サンプルコードの状の比較関数はreturn文で1番目の引数「a」2番目の引数「b」の差「a-b」を戻しているだけです。引数1と引数2の値の結果によって以下のような結果を返します。
判定 | 戻り値 |
---|---|
引数1が大きい | 正の値 |
引数1と引数2が等しい | 0 |
引数2が大きい | 負の値 |
sortメソッドは、比較関数の結果をもとに要素を昇順に並び替えます。引数が数値だとすると「a - b 」は引数aが大きい場合には正の値、引数bの方が大きいときは、負の値、同じだと0を返します。これをsortメソッドの引数に指定することに値の大小の判断が比較関数で行われるようになります。
ちなみ、数値を大きい順に並び替えたいときは、下記のように書きます。
1 |
function compare(a,b){ return b - a;} |
と書きます。
Arrayオブジェクトのメソッド
Arrayオブジェクトの主なメソッド
メソッド名 | メソッドの説明 |
---|---|
concat | 配列に要素を追加して新たな配列を生成する |
join | 配列に要素を引数で指定した文字列で繋げた配列を返す |
pop | 配列の最後の要素を取り出す |
push | 配列の最後に要素を追加する |
reverse | 配列の要素を逆順にする |
shift | 配列の最初の要素を取り出す |
slice | 配列に要素の一部を取り出して新たな配列を生成する |
sort | 配列を並び替える |
unshift | 配列の最初に要素を追加する |