Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda