[解決済み] Underscore: 複数の属性に基づくsortBy()
2022-09-04 19:07:58
質問
複数の属性に基づいたオブジェクトの配列をソートしようとしています。すなわち、最初の属性が2つのオブジェクト間で同じである場合、2番目の属性は2つのオブジェクトを比較するために使用されるべきです。たとえば、次のような配列を考えてみましょう。
var patients = [
[{name: 'John', roomNumber: 1, bedNumber: 1}],
[{name: 'Lisa', roomNumber: 1, bedNumber: 2}],
[{name: 'Chris', roomNumber: 2, bedNumber: 1}],
[{name: 'Omar', roomNumber: 3, bedNumber: 1}]
];
これらを並べ替えるには
roomNumber
属性でソートするには、次のコードを使用します。
var sortedArray = _.sortBy(patients, function(patient) {
return patient[0].roomNumber;
});
これはうまくいきますが、'John' と 'Lisa' が適切にソートされるようにするにはどうしたらよいでしょうか?
どのように解決するのですか?
sortBy
によると、安定ソートアルゴリズムなので、このように最初に2番目のプロパティでソートし、次に最初のプロパティで再びソートすることができるはずです。
var sortedArray = _(patients).chain().sortBy(function(patient) {
return patient[0].name;
}).sortBy(function(patient) {
return patient[0].roomNumber;
}).value();
2番目の
sortBy
が John と Lisa が同じ部屋番号であることを発見した場合、 彼らを発見した順番に並べますが、最初の
sortBy
は "リサ、ジョン" に設定されます。
関連
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] オブジェクトの配列を属性に基づいてフィルタリングする方法は?
-
[解決済み] 複数の属性でリストを並べ替える?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法