###実現したいこと
下記array
に「●_num」というキーがあります。(●の値はxyz以外にもいろいろです)
これに対してextKeys
で指定したキーでソートしたいです。
###対象のコード
const array = [ {id: '1', x_num: '200', y_num: "", z_num: "" }, {id: '2', x_num: "", y_num: '100', z_num: "" }, {id: '3', x_num: "", y_num: "", z_num: '300' }, {id: '4', x_num: '100', y_num: '200', z_num: "" } ];
###試したこと
下記ではconst extKeys = [ 'x_num', 'y_num' ];
と指定していますので、取得したいのは
[ '1', '2', '4', '3' ]
の順のIDです。
[ '1', '4', '2', '3' ]
の順のIDです。
まず最大の200
を持つ1
が最初にきて、あとは2
と4
が同じ100
なのでそのまま入ります。そして空の3
は最後です。
const extKeys = [ 'x_num', 'y_num' ]; array.sort( function( a, b ) { $.each( extKeys,function( index, val ){ if ( a[v] < b[v] ) return -1; if ( a[v] > b[v] ) return 1; return 0; }) }); console.log( array ); // 上の extKeys なら[ '1', '2', '4', '3' ]を取得したい
別の例として、もしconst extKeys = [ 'x_num' ];
だけならば、[ '1', '4', '2', '3' ]
がほしいです。
わかりにくい部分あるかもしれませんが、宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー