Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JRRC

Não armazenar valores repetidos

Recommended Posts

Olá pessoal, boa noite.

Galera é o seguinte, tenho o seguinte menu que é formado a partir do código HTML abaixo.

 

<ul class="menuClasses">    
    <li>
        <a href="#" class="itemMenu" id="Disease">+ Disease</a>
        <div class="conteudoMenu">
            <a href="#" id="name">- name</a>      
            <a href="#" id="class">- class</a>
        </div>
    </li>
    
    <li>
        <a href="#" class="itemMenu" id="Drug">+ Drug</a>
        <div class="conteudoMenu">
            <a href="#" id="name">- name</a>
            <a href="#" id="indication">- indication</a>
            <a href="#" id="metabolism">- metabolism</a>
            <a href="#" id="pregnancyCategory">- pregnancyCategory</a>
        </div>
    </li>
</ul>

 

Com o código abaixo consigo pegar tanto os valores que estão contidos na minha class itemMenu, que são armazenados no meu array menu, quanto os valores contidos na minha class conteudoMenu que são armazenados no meu array subMenu.

 

// Pega os elementos do menu após um click
var menu = [];
var subMenu = [];
$(".conteudoMenu a").click(function(e){
  var valueMenu = $(this).parent(".conteudoMenu").parent("li").find(".itemMenu").attr("id");
  var valueSubMenu = $(this).attr("id");
 
  menu.push(valueMenu);
  subMenu.push(valueSubMenu);
  alert(menu);
});

O que eu gostaria era que os valores armazenados no meu array menu não se repetissem.

Já pesquisei algumas soluções, mas nenhuma deu certo.

 

Então, alguém sabe me dizer como que faço para conseguir isto?

Desde de já obrigado pela ajuda de todos.

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, conseguir fazer da utilizando a biblioteca underscore.js

Enfim, fiz da seguinte maneira abaixo.

Primeiramente obtive todos os itens do meu menu com o seguinte código abaixo.

var itensMenu = [];
$(".itemMenu").each(function(){
  itensMenu.push($(this).attr("id"));
});

Após isso utilizei o método _.intersection da biblioteca underscore.js e meu código ficou da seguinte maneira abaixo.

var menu = [];
var subMenu = [];
var classMenu;
$(".conteudoMenu a").click(function(e){
  var valueMenu = $(this).parent(".conteudoMenu").parent("li").find(".itemMenu").attr("id");
  var valueSubMenu = $(this).attr("id");
 
  menu.push(valueMenu);
  subMenu.push(valueSubMenu);
  // Método da biblioteca underscore
  classMenu = _.intersection(itensMenu, menu);
});

Com isso conseguir que elementos repetidos não fossem adicionados.

Detalhe, quando utilizo esse método, minha variável é transformada em um array.

Caso alguém conheça uma outra solução fique a vontade pra postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.