Как отсортировать набор в JavaScript?

Опубликовано: 11 Августа, 2022

Набор в JavaScript — это объект особого типа, в котором хранятся отдельные элементы. Набор может хранить как примитивы, так и объекты. При переборе заданного объекта он возвращает элементы в том же порядке, в котором они были вставлены.

В этой статье мы увидим, как сортировать Set по значению элементов. Один из способов достижения цели — использовать встроенную функцию sort(). Но функция sort() не может быть напрямую реализована на множестве, а скорее:

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

Поскольку набор возвращает элементы в том же порядке, в котором они были вставлены, теперь весь набор будет отсортирован.

Следует отметить, что здесь, в этой статье, мы будем сортировать набор в порядке возрастания, но порядок сортировки можно настроить в соответствии с необходимостью, реализуя логику сортировки. Теперь мы рассмотрим различные подходы к созданию массивов для достижения нашей цели.

Подход 1. Перебор набора вручную. В этом подходе мы будем перебирать набор вручную и вставлять элементы набора в новый массив, который будет отсортирован в соответствии с нашими потребностями.

Синтаксис:

# myset is the set under consideration for this article
let myarr = [];
    for (let element of myset) {

        // Set elements pushed into the array
        myarr.push(element);
    }
# myArray consists of the elements of the set
myArray.sort()

Пример:

Выход:

Set(4) { 3, 2, 9, 6 }
[ 3, 2, 9, 6 ]
Set(4) { 2, 3, 6, 9 }

Подход 2. Использование метода Array.from(). Одним из способов создания массива является использование встроенного метода Array.from(), который создаст массив из элементов набора. Чтобы узнать больше о методе, перейдите по этой ссылке.

Синтаксис:

# myset is the set under consideration for this article
myArray = Array.from(myset)
myArray.sort()

Пример:

Выход:

Set(4) { 3, 2, 9, 6 }
[ 3, 2, 9, 6 ]
Set(4) { 2, 3, 6, 9 }