jQuery функция $.uniqueSort()

Определение и применение

jQuery функция $.uniqueSort() производит сортировку массива элементов DOM с удалением дубликатов.

Функция $.uniqueSort() выполняет поиск по массиву объектов, сортируя массив и удаляя дубликаты узлов. Узел считается дубликатом, если он точно такой же, как и узел, который уже находится в массиве. Два различных узла с одинаковыми атрибутами не считаются дубликатами. Эта функция работает только на простых JavaScript массивах элементов DOM, и в основном используется внутри jQuery. Вероятно, вам никогда не понадобится её использовать.

До версии jQuery 3.0 этот метод назывался $.unique(). Начиная с версии jQuery 1.4 результаты всегда будут возвращаться в порядке следования документа.

jQuery синтаксис:

JavaScript
$.uniqueSort( arr )

arr - Array

Добавлен в версии jQuery

1.12-2.2

Значения параметров

Параметр Описание
arr Массив, содержащий DOM элементы.

Метод коллекции

Для объекта jQuery с версии 3.7 доступен .uniqueSort(). В отличие от функции $.uniqueSort(array), он возвращает коллекцию jQuery для продолжения цепочки.

Пример использования

Функция $.uniqueSort() — пример 1

Нажмите ▶. Используйте кнопки в результате и наблюдайте изменения. Измените JavaScript и запустите пример повторно. Используется jQuery 4.0.0.

index.html
HTML
<button>Клик</button>
<ul>
  <li>1</li>
  <li class="even">2</li>
  <li>3</li>
  <li class="even">4</li>
  <li>5</li>
</ul>
main.js
JavaScript
$(document).ready(function () {
    $('button').click(function () {
        // задаем функцию при нажатиии на элемент <button>
        const listElements = $('li').get() // возвращаем массив DOM элементов li
        console.log(
            'Все элементы li',
            listElements.map((element) => element.textContent),
        ) // выводим в консоль значение переменной listElements
        const extraListElements = listElements.concat($('.even').get()) // добавляем к массиву дополнительно элементы с классом even и инициализируем переменную этим значением
        console.log(
            'Дополнительно добавим к массиву элементы с классом even',
            extraListElements.map((element) => element.textContent),
        ) // выводим в консоль значение переменной extraListElements
        const sortElements = $.uniqueSort(extraListElements) // сортируем массив элементов DOM с удалением дубликатов
        console.log(
            'Сортируем массив элементов DOM с удалением дубликатов',
            sortElements.map((element) => element.textContent),
        ) // выводим в консоль значение переменной sortElements
    })
})
style.css
CSS
body {
  margin: 16px;
  font:
    16px/1.5 system-ui,
    sans-serif;
  overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
  max-width: 100%;
}

В этом примере с использованием jQuery метода .click() мы при нажатии на элемент <button> (кнопка) вызываем функцию, которая:

  • С помощью метода get() возвращает массив DOM элементов <li>, и инициализируем переменную этим значением. После этого выводим это значение в консоль.
  • С помощью JavaScript метода concat() добавляем к этому массиву новый массив, который состоит из всех элементов с классом even. Обратите внимание, что мы так же используем метод get(), чтобы поместить эти DOM элементы в массив. После этого выводим это значение в консоль.
  • С использованием функции $.uniqueSort() мы производим сортировку переменной extraListElements, содержащей массив элементов DOM, удаляя при этом дубликаты. После этого выводим это значение в консоль. В результате сортировки получившийся массив соответствует значению, содержащемуся в переменной listElements.