12 способов сортировки массива объектов по значениям свойств в JavaScript

12 способов сортировки массива объектов по значениям свойств в JavaScript

В JavaScript существует множество способов сортировки массивов объектов по значениям свойств. В этой статье мы рассмотрим 12 наиболее популярных и эффективных методов сортировки, которые помогут вам упорядочить ваши данные в нужном порядке.

1. Сортировка с использованием метода sort()

Метод sort() является наиболее простым и удобным способом сортировки массива объектов по значениям свойств. Он сортирует элементы массива на месте и возвращает отсортированный массив.

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

array.sort((a, b) => a.age - b.age);

console.log(array);
// Output: [{name: 'Bob', age: 20}, {name: 'John', age: 25}, {name: 'Alice', age: 30}]

2. Сортировка по возрастанию и убыванию

Метод sort() также позволяет сортировать массив по возрастанию и убыванию, в зависимости от значения, возвращаемого функцией сравнения.

const array = [5, 1, 3, 2, 4];

array.sort((a, b) => a - b); // по возрастанию
console.log(array);
// Output: [1, 2, 3, 4, 5]

array.sort((a, b) => b - a); // по убыванию
console.log(array);
// Output: [5, 4, 3, 2, 1]

3. Сортировка по строковым значениям

Если вам нужно отсортировать массив объектов по строковому значению свойства, вы можете использовать метод localeCompare().

const array = [{name: 'John'}, {name: 'Alice'}, {name: 'Bob'}];

array.sort((a, b) => a.name.localeCompare(b.name));

console.log(array);
// Output: [{name: 'Alice'}, {name: 'Bob'}, {name: 'John'}]

4. Сортировка по нескольким свойствам

Для сортировки массива объектов по нескольким свойствам можно использовать метод sort() с дополнительной логикой внутри функции сравнения.

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

array.sort((a, b) => {
  if (a.name === b.name) {
    return a.age - b.age;
  }
  return a.name.localeCompare(b.name);
});

console.log(array);
// Output: [{name: 'Alice', age: 30}, {name: 'Bob', age: 20}, {name: 'John', age: 25}]

5. Сортировка по числовым значениям свойств

Если вам нужно отсортировать массив объектов по числовому значению свойства, вы можете использовать метод sort() с функцией сравнения, которая вычитает одно значение из другого.

const array = [{count: 5}, {count: 1}, {count: 3}, {count: 2}, {count: 4}];

array.sort((a, b) => a.count - b.count);

console.log(array);
// Output: [{count: 1}, {count: 2}, {count: 3}, {count: 4}, {count: 5}]

6. Сортировка с использованием библиотеки Lodash

Библиотека Lodash предоставляет множество полезных функций, включая функции сортировки для работы с массивами объектов.

const _ = require('lodash');

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

const sortedArray = _.sortBy(array, ['age']);

console.log(sortedArray);
// Output: [{name: 'Bob', age: 20}, {name: 'John', age: 25}, {name: 'Alice', age: 30}]

7. Сортировка с использованием метода localeCompare() из библиотеки Lodash

Lodash также предоставляет функцию sortBy() с возможностью сортировки по строковым значениям, используя метод localeCompare().

const _ = require('lodash');

const array = [{name: 'John'}, {name: 'Alice'}, {name: 'Bob'}];

const sortedArray = _.sortBy(array, [(o) => o.name]);

console.log(sortedArray);
// Output: [{name: 'Alice'}, {name: 'Bob'}, {name: 'John'}]

8. Сортировка с использованием метода orderBy() из библиотеки Lodash

Метод orderBy() из библиотеки Lodash позволяет сортировать массив объектов по нескольким свойствам и указывать направление сортировки.

const _ = require('lodash');

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

const sortedArray = _.orderBy(array, ['name', 'age'], ['asc', 'desc']);

console.log(sortedArray);
// Output: [{name: 'Alice', age: 30}, {name: 'Bob', age: 20}, {name: 'John', age: 25}]

9. Сортировка с использованием метода sortBy() из библиотеки Underscore.js

Underscore.js – еще одна популярная библиотека, предоставляющая функции для работы с массивами объектов.

const _ = require('underscore');

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

const sortedArray = _.sortBy(array, 'age');

console.log(sortedArray);
// Output: [{name: 'Bob', age: 20}, {name: 'John', age: 25}, {name: 'Alice', age: 30}]

10. Сортировка с использованием метода sortBy() из библиотеки Underscore.js и функции сравнения

Underscore.js также позволяет использовать функцию сравнения для определения порядка сортировки.

const _ = require('underscore');

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

const sortedArray = _.sortBy(array, (o) => o.age);

console.log(sortedArray);
// Output: [{name: 'Bob', age: 20}, {name: 'John', age: 25}, {name: 'Alice', age: 30}]

11. Сортировка с использованием метода orderBy() из библиотеки Underscore.js

Метод orderBy() из библиотеки Underscore.js позволяет сортировать массив объектов по нескольким свойствам и указывать направление сортировки.

const _ = require('underscore');

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

const sortedArray = _.orderBy(array, ['name', 'age'], ['asc', 'desc']);

console.log(sortedArray);
// Output: [{name: 'Alice', age: 30}, {name: 'Bob', age: 20}, {name: 'John', age: 25}]

12. Сортировка с использованием метода chain() из библиотеки Underscore.js

Метод chain() из библиотеки Underscore.js позволяет выполнять цепочку операций с массивом объектов, включая сортировку.

const _ = require('underscore');

const array = [{name: 'John', age: 25}, {name: 'Alice', age: 30}, {name: 'Bob', age: 20}];

const sortedArray = _.chain(array)
  .sortBy('age')
  .value();

console.log(sortedArray);
// Output: [{name: 'Bob', age: 20}, {name: 'John', age: 25}, {name: 'Alice', age: 30}]

В этой статье мы рассмотрели 12 различных способов сортировки массива объектов по значениям свойств в JavaScript. Вы можете выбрать наиболее подходящий для вас метод в зависимости от ваших потребностей и предпочтений.

Читайте так же  Как получать каждые 12 элементов из массива на JavaScript?