Возникает ситуация, когда есть массив объектов JavaScript, и требуется отсортировать эти объекты по значению свойства, которое является строкой. Например, есть массив объектов, где каждый объект представляет информацию о студенте: его имя и фамилию. И задача состоит в том, чтобы отсортировать этот массив по фамилии студентов.
var students = [ { firstName: 'Иван', lastName: 'Иванов' }, { firstName: 'Петр', lastName: 'Петров' }, { firstName: 'Сидор', lastName: 'Сидоров' } ];
Метод sort()
в JavaScript используется для сортировки элементов массива. Он работает прекрасно с числами и строками, но для сортировки массива объектов по значению свойства строки требуется немного больше кода.
Метод sort()
может принимать функцию сравнения в качестве аргумента. Эта функция должна принимать два аргумента (два сравниваемых элемента) и возвращать:
- отрицательное число, если первый элемент меньше второго,
- положительное число, если первый элемент больше второго,
- ноль, если элементы равны.
Вернемся к примеру со студентами. Для сортировки массива студентов по фамилии можно использовать следующий код:
students.sort(function(a, b) { var nameA = a.lastName.toUpperCase(); // приведем все к верхнему регистру для корректного сравнения var nameB = b.lastName.toUpperCase(); if (nameA < nameB) { return -1; } if (nameA > nameB) { return 1; } return 0; // имена равны });
После выполнения этого кода массив students
будет отсортирован по фамилии студентов в алфавитном порядке. Таким образом, для сортировки массива объектов по значению свойства строки в JavaScript, можно использовать метод sort()
с функцией сравнения.
Добавить комментарий