• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

343
Views
¿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).

about 3 years ago · Santiago Trujillo
3 answers
Answer question

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; } }
about 3 years ago · Santiago Trujillo Report

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]);
about 3 years ago · Santiago Trujillo Report

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]
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error