JavaScript 配列 新しいページはコチラ
提供: yonewiki
(→配列ソート+ソート方法指定 sort) |
(→配列ソート+ソート方法指定 sort) |
||
983行: | 983行: | ||
と、関数の中身をがっつりと引数の中に書き込みする方法が一つです。もう一つは、以前の項目で説明したように[[JavaScript 関数|関数]]に名前をつけて | と、関数の中身をがっつりと引数の中に書き込みする方法が一つです。もう一つは、以前の項目で説明したように[[JavaScript 関数|関数]]に名前をつけて | ||
+ | |||
+ | |||
+ | *Data1Arr.sort(SortFunc); | ||
+ | ::… | ||
+ | ::function SortFunc(BeforeElement,AfterElement) = { | ||
+ | :::if(BeforeElement < AfterElement) return -1; | ||
+ | :::if(BeforeElement > AfterElement) return 1; | ||
+ | :::return 0 | ||
+ | ::} | ||
+ | ::… | ||
+ | |||
+ | |||
+ | のように、関数を別で定義してもよいです。関数には二つの引数をうけとり前の要素番号と後ろの要素番号を比較した場合に-1もしくは1もしくは0を返却するような関数を作ります。-1が返却される場合は小さい要素番号と大きい要素番号は入れ替わるように動作します。上記の例では、小さい要素番号と大きい要素番号を比較した結果、前の要素の方が小さい値なら、大きい要素番号と入れ替えなさいという命令になっていて、そうでないなら入れ替えない。という降順ソートを指定しています。昇順の場合は、ソート関数の引数を省略してよいので、何も書かなくてよいでしょう。 | ||
+ | |||
+ | |||
+ | そして、連想配列の場合は、どのプロパティ値を比較して、ソートするのかを関数を使って指定することができて、以下のように指定します。 | ||
+ | |||
+ | |||
+ | *Data1Arr.sort(function(BeforeElement,AfterElement){ | ||
+ | :::if(BeforeElement.price < AfterElement.price) return -1; | ||
+ | :::if(BeforeElement.price > AfterElement.price) return 1; | ||
+ | :::return 0 | ||
+ | ::} | ||
+ | :); | ||
+ | |||
+ | |||
+ | と、このように特定のプロパティ値を比較した結果に絞ることができます。ソート関数の引数は、他の配列に対してはあまり有効にはならないことがあるので、使いまわしにくいですが、特定のプロパティ値に集中してソートするようなソート関数の引数の関数は名前を付けて繰り返し再利用するような形式の記述を使うことも一つの手段になります。 | ||
+ | |||
+ | |||
+ | 昇順ソートや降順ソートを、ソート関数の引数の中で指定した方が処理速度的にも早くなるし、スマートだとされていますが、いろいろな理由で昇順ソートしてから、それをreverseした方が早いという結果になる場合も発生してくるかもしれません。大きなシステムを作るわけでもない限り、あまり気にしなくてもよいと思いますが、都度、どのようにするのが速度向上につながるのか?そういうことは調べた方が良いかもしれません。 | ||
[[JAVA Script#リファレンス]]に戻る。 | [[JAVA Script#リファレンス]]に戻る。 |