Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

357
Views
¿Por qué Set() repite valores?

Estoy tratando de usar Set() en js para recuperar algunos 'datos únicos', pero me sigue devolviendo valores repetidos.

Depuración de la consola: Depuración de la consola

Código:

 userStories.add({ user_id: storie.user_id, avatar: storie.user.avatar, });
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

¿Parece que está tratando de evitar la duplicación de usuarios?

Es inteligente tratar de usar un conjunto, porque los conjuntos evitan la duplicación, pero desafortunadamente solo funcionan de la forma prevista si el elemento es un tipo de datos primitivo como String o Number , y no si es un objeto, es decir, de la forma { key: value, ... } .

Si el elemento es solo una cadena, por ejemplo, "Bob", porque el Conjunto considera que dos cadenas "Bob" y "Bob" son idénticas, por lo que se ingresarán como un solo elemento.

Sin embargo, si su elemento es un objeto , por ejemplo, {nombre: "Bob"}, entonces dos elementos definidos por separado como {name: "Bob"} y {name: "Bob"} se considerarán desiguales, por lo que se ingresarán como dos diferentes elementos del Conjunto.

Intenta usar un objeto simple

Inicializar así:

 userStories = {}

Y luego para cada entrada:

 userStories[user_id]=({ avatar: storie.user.avatar, });

De esta manera, terminas con esta estructura:

 userStories: { 1234: { avatar: "abc.jpg" }, 1258: { avatar: "def.jpg" }, etc }

Puede usar esta estructura de Objeto de la misma manera que estaba usando el Conjunto, con dos ventajas:

(a) Si ingresa dos entradas idénticas, como 1234: { avatar: "abc.jpg" } , solo se almacenará una.

(b) Puede acceder directamente al avatar de cualquier persona, por su identificación. (Con el Conjunto, aún tendría que buscar de alguna manera los elementos para encontrar el correcto).

about 4 years ago · Juan Pablo Isaza Report

0

El objeto Set le permite almacenar valores únicos de cualquier tipo, ya sean valores primitivos o referencias a objetos, no solo objetos. Ver referencia MDN

 const mySet = new Set(); const object1 = {a:1, b:1}; mySet.add(object1); mySet.add(object1); console.log(mySet); // The set will be having only 1 entry as both the times we added the same reference of object1.

Sin embargo, si intenta insertar diferentes referencias de objetos, el conjunto continúa agregando objetos. Por ejemplo:

 const mySet = new Set(); const object1 = {a:1, b:1}; mySet.add(object1); mySet.add({a:1,b:1}); // This is a new object not the object1 console.log(mySet); It will have 2 entries

No solo los objetos son iguales con Arrays si intentas hacer lo mismo que arriba.

about 4 years ago · Juan Pablo Isaza Report

0

Los objetos en JavaScript son tipos de referencia , lo que significa que cuando crea un nuevo objeto en su función, JavaScript piensa que son diferentes (incluso cuando tienen los mismos valores).

Del artículo:

Si son objetos distintos, incluso si contienen propiedades idénticas, la comparación resultará falsa.

 var arr1 = ['Hi!']; var arr2 = ['Hi!']; console.log(arr1 === arr2); // -> false
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!