1.4 KiB
1.4 KiB
Сортировка
[importance 5]
У нас есть массив объектов:
var users = [{
name: "Вася",
surname: 'Иванов',
age: 20
}, {
name: "Петя",
surname: 'Чапаев',
age: 25
}, {
name: "Маша",
surname: 'Медведева',
age: 18
}];
Обычно сортировка по нужному полю происходит так:
// по полю name (Вася, Маша, Петя)
users.sort(function(a, b) {
return a.name > b.name ? 1 : -1;
});
// по полю age (Маша, Вася, Петя)
users.sort(function(a, b) {
return a.age > b.age ? 1 : -1;
});
Мы хотели бы упростить синтаксис до одной строки, вот так:
users.sort(byField('name'));
users.forEach(function(user) {
alert( user.name );
}); // Вася, Маша, Петя
users.sort(byField('age'));
users.forEach(function(user) {
alert( user.name );
}); // Маша, Вася, Петя
То есть, вместо того, чтобы каждый раз писать в sort
function...
-- будем использовать byField(...)
Напишите функцию byField(field)
, которую можно использовать в sort
для сравнения объектов по полю field
, чтобы пример выше заработал.