ど素人から毛を生やす。<延>

jsの連想配列をソートしたかった話。

Web > javascript 2019年12月25日(最終更新:3月前)

どもです。

jsで連想配列(オブジェクト)の値によるソートを行いたかったのですが、調べても調べても

let array = [
     { name:'aaa', value:1 }
     { name:'bbb', value:2 }
     { name:'ccc', value:3 }
 ];
 array.sort(function(a,b){
     return (a.value - b.value);
 });

みたいな、「連想配列の配列」のソートばかりが出てくるんですよ。

そうじゃなくて、PHPで言うなら

$array = array(
     'aaa' => 1,
     'bbb' => 2,
     'ccc' => 3,
);
asort($array);

こっちがやりたいんですね。

で、結論から言うと、これはできない。

正確には.prototype.sort=function(){}で独自のソート関数を作成すればできるのですが、jsファイル作るたびに都度にそんな面倒くさいこと、やってられない。連想配列自体の宣言も面倒になるし。

厳密にはjsに「連想配列」は無く、オブジェクトで代替しているために偶にこういう不便があるんですね。
連想配列をソートしたい場合、最初から配列を「連想配列の配列」で作ってしまうのが妥当のようです。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)