Прежде всего, как обсуждалось выше, описание MDN очень хорошее.
Но мы можем упростить здесь:
Когда мы вызываем sort
, это позволяет нам предоставить function
для оценки двух elements
из array
в любой момент времени.
function
должно вернуть:
- a
negative
значение, если a < b
- a
positive
значение, если a > b
- и
0
, если a === b
.
Функция sort
будет затем использовать это значение для упорядочивания этих двух элементов соответственно.
// Number ordering is very straight forward.
const hola = [0, 4, 10, 60, 5]
const holaSorted = hola.sort((a,b) => a-b);
console.log(holaSorted);
// reverse the order.
const holaSorted2 = hola.sort((a,b) => b-a);
console.log(holaSorted);
Но не все - это простое число, часто мы хотим отсортировать объекты, и здесь становится более важным предоставить собственный оценщик.
Ниже мы сортируем, используя name
, и нам нужно передать обратно 1 || -1 || 0
на основе сравнения строк.
const people = [
{
name: 'Bob',
age: 20
},
{
name: 'Anne',
age: 50,
},
{
name: 'Terry',
age: 5
}
];
// Order by name
const byName = people.sort((a,b) => (a.name < b.name) ? -1 : (a.name > b.name) ? 1 : 0);
console.log(byName);
// Order by age
const byAge = people.sort((a, b) => a.age-b.age);
console.log(byAge);