JavaScript . Пишем сортировку для массивов

1 046

Доброго времени суток друзья! Сегодня я хочу показать вам метод 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() ). Надеюсь что данная статья была вам полезной. Оставляйте свои комментарии. Делитесь с друзьями. Удачно вам покодить!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *