返回課程

依欄位排序

重要性: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;
}

在沙盒中開啟包含測試的解決方案。