Saltar al contenido

cómo evitar agregar duplicados keys a un javascript array

Luego de consultar con especialistas en el tema, programadores de varias áreas y profesores hemos dado con la respuesta al problema y la dejamos plasmada en esta publicación.

Solución:

En términos generales, esto se logra mejor con un objeto, ya que JavaScript realmente no tiene matrices asociativas:

var foo =  bar: 0 ;

Entonces usa in para comprobar si hay un key:

if ( !( 'bar' in foo ) ) 
    foo['bar'] = 42;

Como se señaló correctamente en los comentarios a continuación, este método es útil solamente cuando tu keys serán cadenas, o elementos que se pueden representar como cadenas (como números).

var a = [1,2,3], b = [4,1,5,2];

b.forEach(function(value)
  if (a.indexOf(value)==-1) a.push(value);
);

console.log(a);
// [1, 2, 3, 4, 5]

Para obtener más detalles, lea en Array.indexOf.

Si desea confiar en jQuery, utilice en su lugar jQuery.inArray:

$.each(b,function(value)
  if ($.inArray(value,a)==-1) a.push(value);
);

Si todos sus valores son simples y únicos representables como cadenassin embargo, debe usar un Objeto en lugar de una Matriz, para un potencial masivo aumento de velocidad (como se describe en la respuesta de @JonathanSampson).

Se proporciona una mejor alternativa en ES6 usando Sets. Entonces, en lugar de declarar Arrays, se recomienda usar Sets si necesita tener un array eso no debería agregar duplicados.

var array = new Set();
array.add(1);
array.add(2);
array.add(3);

console.log(array);
// Prints: Set(3) 1, 2, 3

array.add(2); // does not add any new element

console.log(array);
// Still Prints: Set(3) 1, 2, 3

Si haces scroll puedes encontrar las crónicas de otros creadores, tú de igual manera tienes la habilidad dejar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *