Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
¿Función jQuery para obtener todos los elementos únicos de una matriz?

jQuery.unique le permite obtener elementos únicos de una matriz, pero los documentos dicen que la función es principalmente para uso interno y solo opera en elementos DOM. Otra respuesta de SO dijo que la función unique() funcionó en números, pero que este caso de uso no es necesariamente una prueba futura porque no se indica explícitamente en los documentos.

Dado esto, ¿existe una función jQuery "estándar" para acceder solo a los valores únicos, específicamente, primitivos como números enteros, en una matriz? (Obviamente, podemos construir un ciclo con la función each() , pero somos nuevos en jQuery y nos gustaría saber si hay una función jQuery dedicada para esto).

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede usar array.filter para devolver el primer elemento de cada valor distinto:

 var a = [ 1, 5, 1, 6, 4, 5, 2, 5, 4, 3, 1, 2, 6, 6, 3, 3, 2, 4 ]; var unique = a.filter(function(itm, i, a) { return i == a.indexOf(itm); }); console.log(unique);

Si la compatibilidad con IE8 e inferior es principal, no use el método de filter no compatible.

De lo contrario,

 if (!Array.prototype.filter) { Array.prototype.filter = function(fun, scope) { var T = this, A = [], i = 0, itm, L = T.length; if (typeof fun == 'function') { while(i < L) { if (i in T) { itm = T[i]; if (fun.call(scope, itm, i, T)) A[A.length] = itm; } ++i; } } return A; } }
over 4 years ago · Santiago Trujillo Relatório

0

Simplemente use este código como base de un complemento JQuery simple.

 $.extend({ distinct : function(anArray) { var result = []; $.each(anArray, function(i,v){ if ($.inArray(v, result) == -1) result.push(v); }); return result; } });

Usar como tal:

 $.distinct([0,1,2,2,3]);
over 4 years ago · Santiago Trujillo Relatório

0

Basado en la respuesta de @kennebec, pero corregido para IE8 y versiones anteriores mediante el uso de envoltorios jQuery alrededor de la matriz para proporcionar el filter de funciones de matriz faltantes e indexOf :

Es posible que el contenedor $.makeArray() no sea absolutamente necesario, pero obtendrá resultados extraños si omite este contenedor y JSON.stringifica el resultado de lo contrario.

 var a = [1,5,1,6,4,5,2,5,4,3,1,2,6,6,3,3,2,4]; // note: jQuery's filter params are opposite of javascript's native implementation :( var unique = $.makeArray($(a).filter(function(i,itm){ // note: 'index', not 'indexOf' return i == $(a).index(itm); })); // unique: [1, 5, 6, 4, 2, 3]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda