JavaScriptで2つの基準による配列の並べ替え
以下を日付とisImportantでソートする配列とします。 isImportantプロパティtrueを持つすべてのオブジェクトは、isImportant falseを持つどのオブジェクトよりもランクが高く、両方のグループがdateプロパティに従ってソートされます。
以下は私たちの配列です-
const array = [{ id: 545, date: 591020824000, isImportant: false, }, { id: 322, date: 591080224000, isImportant: false, }, { id: 543, bdate: 591080424000, isImportant: true, }, { id: 423, date: 591080225525, isImportant: false, }, { id: 135, date: 591020225525, isImportant: true, }, ];
その後、このような配列ソートメソッドを使用して、上記の配列で目的の結果を得ることができます-
array.sort((a, b) => { if(a.isImportant && !b.isImportant){ return -1; }else if(!a.isImportant && b.isImportant){ return 1; }else{ return b.date-a.date; } });
sort()コールバック関数は通常2つの引数、たとえばaとbを受け取ります。これらは、sort()が呼び出された配列の2つの要素にすぎず、コールバック関数は配列の要素の可能なペアごとに実行されます。
コールバックから-1(任意の負の値)を返すことは、最初の要素を2番目よりも高くランク付けすることを意味します。
コールバックから1(任意の正の値)を返すことは、2番目の要素を最初の要素よりも上位にランク付けすることを意味します。
0を返しても変更はありません。 aまたはbのいずれかにisImportantプロパティがfalseに設定されているかどうかを確認し、yesの場合は、その1つ下にランク付けします。それ以外の場合は、日付プロパティに従ってランク付けします。
例
完全な例を見てみましょう-
const array = [{ id: 545, date: 591020824000, isImportant: false, }, { id: 322, date: 591080224000, isImportant: false, }, { id: 543, bdate: 591080424000, isImportant: true, }, { id: 423, date: 591080225525, isImportant: false, }, { id: 135, date: 591020225525, isImportant: true, }, ]; array.sort((a, b) => { if(a.isImportant && !b.isImportant){ return -1; }else if(!a.isImportant && b.isImportant){ return 1; }else{ return b.date-a.date; } }); console.log(array);
出力
コンソールでのコードの出力は-
になります[ { id: 3, date: 591080424000, isImportant: true },{ id: 5, date: 591020225525, isImportant: true }, { id: 4, date: 591080225525, isImportant: false },{ id: 2, date: 591080224000, isImportant: false }, { id: 1, date: 591020824000, isImportant: false } ]
-
JavaScriptで2つの配列を結合する方法は?
以下は、JavaScriptで2つの配列を結合するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &
-
JavaScriptで2つの配列を乗算する方法は?
以下は、JavaScriptで2つの配列を乗算するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &