[Javascript] 配列のソートを便利に手動で行う方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

企業の値引き広告を見た時に、そんだけ値引いても利益が出るって、どんだけ暴利やねん!!!と意味なく腹が立ってくる下駄です。
 

連日のjavascriptネタですが・・・、そうです、今現在はフロントコーディングの真っ最中です。
 

配列データのソート機能を便利に手動で複雑なものにも対応できる事がわかったので、自分用の備忘録を残しておきます。

配列の標準ソート機能

単純な一元配列であれば、sort関数だけで、昇順に並べ替えてくれます。
 

 

数値でも、文字列でもイケます。
 

 

そのかわり、stringの場合は、文字コードでソートされるため、気をつけなければいけません。
 

大文字小文字を区別せずに文字列の配列をabc順でソートしたい場合は、以下のように書きます。
 

 

ちょっと気になったので、数値と文字列の混在した状態で以下のようなケースでソートしてみました。
 

 

数値が文字列で登録されていても、ちゃんと変換されるんですね。
でも、こんな状態になるソートの前に、変数型を整える作業が必要なんですけどね・・・

データ配列のソート

単純な数値や文字列だけの配列ではなく、配列のそれぞれの値がobjectデータになっているようなケースがあります。
 

※むしろこっちのほうがシステムで使うケースは多いですけどね。
 

 

予想通り、sort関数は全く機能していません。
 

こうした場合は以下のように処理しましょう。

単一key(任意の値)によるソート

 

 

さらに、昇順ではなく降順にしたい場合は、returnの”-1″と”1″を逆にするだけです。
 

複数のkeyによるソート

そして、ソートをする場合にidとnumを両方一緒にソートしたい場合には以下のようにします。
 

 

id,numの順番でソートを行いましたが、順番を入れ替えたい場合は、sort/function内のif文の順番を変更することで、ソート優先順位を切り替えられます。

連想配列のkey値でのソート

最後に、javascriptでは、連想配列のソート機能が無かったので、以下のような関数を作ってみました。
 

 

おまけですが、keyソートを流用してvalueソートも作っておきました。
 

 

連想配列単体の内部でのソートってあんまりニーズは無いかもしれないですが、ググってもこうしたコードが出てこなかったので作っておきました。
 

javascriptの配列ソートを極めてHappyCoding!!!

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です