✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Удаление повторяющихся элементов с помощью JavaScript

21

Поскольку ES6 становится все более и более популярным в веб-разработке, мы, вероятно, будем видеть и писать меньше кода с использованием других библиотек. Когда дело доходит до WordPress, jQuery все еще очень распространен.

Лично я не думаю, что есть что-то изначально неправильное в использовании jQuery (хотя вам это может и не понадобиться ), но я также думаю, что важно поддерживать свои навыки в актуальном состоянии с новыми технологиями.

Удаление повторяющихся элементов с помощью JavaScript

Но цель этого поста не в том, чтобы научиться писать код ES6, и не в том, как чего-то добиться с помощью ES6.

Вместо этого речь по-прежнему идет о WordPress и jQuery. Я вернусь к ES6 в конце поста. Одна из вещей, которые я хотел бы осветить, это как удалить повторяющиеся элементы из списка с общим свойством.

Удаление повторяющихся элементов (через jQuery)

Более конкретно, давайте предположим, что у вас есть список элементов — возможно, это упорядоченный список, упорядоченный список или даже просто контейнер с набором дочерних элементов — и каждый дочерний элемент имеет набор свойств.

Эти свойства могут быть атрибутами класса, пользовательскими свойствами данных или чем-то подобным. Например, предположим, что у нас есть неупорядоченный список, и каждый дочерний элемент имеет свойство data-id .

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

Вот код для этого с комментарием под ним:

/** * Removes duplicates from the specified array of items; however, this function * assumes that $items is an unordered list of items with child elements. * * @param $items An unordered list of products with duplicaten children. * @return $items An unordered list of products no duplicate children. * * @private */ var _removeDuplicates = function($items) { var unique = {}, dataItemId = -1; $items .children() .each(function() { dataItemId = $(this).attr('data-id'); if (unique[dataItemId]) { $(this).remove(); } else { unique[dataItemId] = true; } }); return $item; };

Обратите внимание на следующее:

  • функция принимает обернутый jQuery список элементов с дочерними элементами,
  • дочерние элементы элемента data-id, который используется для определения существования повторяющихся элементов,
  • мы настраиваем массив, чтобы определить, видели ли мы этот элемент раньше,
  • если нет, добавляем в список; в противном случае мы удаляем его,
  • наконец, мы возвращаем измененный, более обновленный список.

И это почти построчно то, что делает код.

Лично я стараюсь не использовать операторы if/else в контексте цикла (или даже вне цикла), но бывают случаи, когда это не является плохой практикой, и это один из них.

Так что же это было с ES6?

Ранее я упоминал, что ES6 находится на подъеме, и это то, чему мы, как разработчики, должны учиться. Поскольку я продолжу это делать, возможно, я вернусь к этому посту и расскажу, как добиться той же функциональности, используя ES6, а не jQuery, чтобы показать, как это можно сделать.

Удаление повторяющихся элементов с помощью JavaScript

Независимо от того, если вы используете WordPress и используете jQuery в течение многих лет, с которыми он использовался, я призываю вас выйти за пределы библиотеки и изучить некоторые из новых функций языка.

Лично я учусь на практике, и хотя у меня изначально была склонность использовать jQuery по умолчанию, я решил использовать ES6 в проекте, над которым мы сейчас работаем, по настоянию товарища по команде.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее