Não armazenar valores repetidos em um array

1,084 views
Skip to first unread message

Jeovane Reges

unread,
Jan 16, 2013, 4:44:27 PM1/16/13
to jque...@googlegroups.com

Olá pessoal, boa noite.

Galera é o seguinte, tenho o seguinte menu que é formado a partir do código HTML (http://jsfiddle.net/Sgyhq/).


Com o meu código em jQuery 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.


O que eu gostaria era que os valores que fossem sendo 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.

Renan Couto

unread,
Jan 16, 2013, 5:21:17 PM1/16/13
to jque...@googlegroups.com
Tem uma biblioteca chamada underscore.js que tem alguns métodos que lidam com arrays. Da uma olhada no union que acho que faz oq precisa, se é que vc pode carregar mais uma outra lib: http://underscorejs.org/#union


2013/1/16 Jeovane Reges <jeovan...@gmail.com>

Jeovane Reges

unread,
Jan 16, 2013, 5:27:25 PM1/16/13
to jque...@googlegroups.com
Olá Renan Couto, obrigado.
O que eu gostaria era algo com o contains do java. 
Ou seja, no momento que eu fosse adicionar um elemento no array, verificava logo se esse elemento já existe no mesmo.
Caso ele já exista, então, não o adiciono.
Entendeu? Acho que agora ficou mais claro o que desejo :-)

Jeovane Reges

unread,
Jan 16, 2013, 6:51:44 PM1/16/13
to jque...@googlegroups.com

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.


Em quarta-feira, 16 de janeiro de 2013 18h44min27s UTC-3, Jeovane Reges escreveu:

Renan Couto

unread,
Jan 16, 2013, 7:07:22 PM1/16/13
to jque...@googlegroups.com

Renan Couto

unread,
Jan 16, 2013, 5:58:26 PM1/16/13
to jque...@googlegroups.com

Jeovane Reges

unread,
Jan 17, 2013, 8:05:12 AM1/17/13
to jque...@googlegroups.com
Obrigado Renan pela ajuda :)
Irei verificar essa outra opção depois.


Em quarta-feira, 16 de janeiro de 2013 18h44min27s UTC-3, Jeovane Reges escreveu:

Asdrubal

unread,
Jan 17, 2013, 9:49:35 AM1/17/13
to jque...@googlegroups.com
Parabéns pelo retorno didático


--
Reply all
Reply to author
Forward
0 new messages