✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Removendo itens duplicados com JavaScript

8

À medida que o ES6 se torna cada vez mais popular no desenvolvimento web, provavelmente veremos – e escreveremos – menos código usando outras bibliotecas. Quando se trata de WordPress, jQuery ainda é muito comum.

Pessoalmente, não acho que haja algo inerentemente errado em usar jQuery (embora você possa não precisar ), mas também acho importante manter suas habilidades afiadas e atualizadas com as tecnologias mais recentes.

Removendo itens duplicados com JavaScript

Mas aprender a escrever código ES6 não é o objetivo deste post, nem é como conseguir algo usando ES6.

Em vez disso, ainda é sobre WordPress e jQuery. Voltarei ao ES6 no final do post. Uma das coisas que eu adoraria abordar, porém, é como remover itens duplicados de uma lista com uma propriedade comum.

Removendo itens duplicados (via jQuery)

Mais especificamente, vamos supor que você tenha uma lista de itens – talvez seja uma lista ordenada, uma lista ordenada ou até mesmo um contêiner com um conjunto de filhos – e cada filho tenha um conjunto de propriedades.

Essas propriedades podem ser atributos de classe, propriedades de dados personalizadas ou algo assim. Por exemplo, digamos que temos uma lista não ordenada e cada item filho tem uma propriedade data-id.

Além disso, digamos que a lista de itens seja construída a partir da resposta de qualquer API em que existam duplicatas nos dados. Claro, o lado do servidor deve lidar com isso, mas nos casos em que não é feito, ainda pode ser feito no lado do cliente.

Aqui está o código para fazer isso com o comentário abaixo:

/** * 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; };

Observe o seguinte:

  • a função aceita uma lista de itens encapsulada em jQuery com filhos,
  • os filhos de um elemento data-id que é usado para determinar se existem itens duplicados,
  • configuramos um array para determinar se já vimos o item antes,
  • se não, adicionamos à lista; caso contrário, nós o removemos,
  • finalmente, retornamos a lista modificada e mais atualizada.

E isso é quase linha por linha o que o código está fazendo.

Pessoalmente, tento não usar instruções if/else dentro do contexto de um loop (ou mesmo fora de um loop), mas há momentos em que não é uma prática ruim fazê-lo, e esse é um deles.

Então, o que foi isso sobre ES6?

Anteriormente, mencionei que o ES6 está em alta e é algo que nós, como desenvolvedores, devemos aprender. À medida que continuar fazendo isso, talvez eu revisite este post e compartilhe como obter a mesma funcionalidade usando ES6 em vez de jQuery para mostrar como isso pode ser feito.

Removendo itens duplicados com JavaScript

Independentemente disso, se você estiver usando o WordPress e estiver usando jQuery nos anos em que foi usado, peço que você saia da biblioteca e aprenda alguns dos recursos mais recentes da linguagem.

Pessoalmente, eu aprendo fazendo, e embora eu tivesse uma propensão inicial para usar como padrão o jQuery, optei por ir com o ES6 em um projeto no qual estamos trabalhando atualmente por insistência de um colega de equipe.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação