Оглавление
Доброго времени суток друзья! Сегодня я хочу показать вам метод sort() для сортировки массивов в JavaScript. Часто в «продакшене» возникает необходимость отсортировать массив со сложными объектами. В данной статья я постараюсь показать вам как этого добиться. Приступим.
Метод сорировки массивов sort()
В начале давайте рассмотрим сам метод и его синтаксис написания.
arr.sort( compareFunct )
sort() — метод в js для сортировки массивов
compareFunct— функция в которой можно указать условия для сортировки ( если ее не указывать то сортировка буде происходить путем преобразования каждого элемента массива в строку и сортировки его по Unicode символам)
arr.sort() такой вариант сортировки в реальных условиях «продакшена» обычно не подходит в виду сложности содержимого самого массива, по этому перейдем к разбору compareFunct.
compareFunct
Если у нас объявляется функция compareFunct то вся сортировка происходит в соответствии с теми значениями массива которые она вернет.
Данная функция по умолчанию имеет два аргумента через которые будет происходить весь основной процесс сортировки массива путем их сравнивания и перебирания.
Если написать так, то функция отсортирует простой массив по возрастанию.
function compareFunct(a, b) {
return a - b;
}
Например
var numbersArr = [400, 100, 540, 900];
numbersArr.sort(function(a, b) {
return a - b;
});
// [100, 400, 540, 900]
Давайте усложним задачу и отсортируем следующий массив.
let arr = [{ name: «1-1__01»}, {name: «1-2__02»}, {name: «1-3__03»}]
Для этого мы напишем отдельно функцию которая будет обрабатывать каждый объект в массиве вырезая лишние символы из name и приводя его в строку ( + или parseInt)
Вот сама фукнция
function compareFunction(str){
return +str.replace('-', '').replace('_', '')
}
А теперь отсортируем данный массив так что бы в начале было меньшее число а потом большее
arr.sort((a, b) => compareFunction(a.name) > compareFunction(b.name) ? 1 : -1)
Заключение
Сегодня мы коротко коснулись темы сортировки массивов ( в частности функции sort() ). Надеюсь что данная статья была вам полезной. Оставляйте свои комментарии. Делитесь с друзьями. Удачно вам покодить!
Комментарии: