レッスンの先頭に戻る

フィールドでソート

重要度: 5

ソートするオブジェクトの配列を取得しました

let users = [
  { name: "John", age: 20, surname: "Johnson" },
  { name: "Pete", age: 18, surname: "Peterson" },
  { name: "Ann", age: 19, surname: "Hathaway" }
];

これを行う通常の方法は次のとおりです。

// by name (Ann, John, Pete)
users.sort((a, b) => a.name > b.name ? 1 : -1);

// by age (Pete, Ann, John)
users.sort((a, b) => a.age > b.age ? 1 : -1);

次のように、さらに冗長性を減らすことはできますか?

users.sort(byField('name'));
users.sort(byField('age'));

関数を書く代わりに、byField(fieldName)を入れればよいのです。

そのために使用できるbyField関数を作成します。

テストを含むサンドボックスを開きます。

function byField(fieldName){
  return (a, b) => a[fieldName] > b[fieldName] ? 1 : -1;
}

サンドボックスでテストを含む解決策を開きます。