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

213
Vistas
JSON encadena un conjunto

¿Cómo sería un JSON.stringify() un Set ?

Cosas que no funcionaron en Chromium 43:

 var s = new Set(['foo', 'bar']); JSON.stringify(s); // -> "{}" JSON.stringify(s.values()); // -> "{}" JSON.stringify(s.keys()); // -> "{}"

Esperaría obtener algo similar al de una matriz serializada.

 JSON.stringify(["foo", "bar"]); // -> "["foo","bar"]"
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

JSON.stringify no funciona directamente con conjuntos porque los datos almacenados en el conjunto no se almacenan como propiedades.

Pero puede convertir el conjunto en una matriz. Entonces podrás encadenarlo correctamente.

Cualquiera de los siguientes hará el truco:

 JSON.stringify([...s]); JSON.stringify([...s.keys()]); JSON.stringify([...s.values()]); JSON.stringify(Array.from(s)); JSON.stringify(Array.from(s.keys())); JSON.stringify(Array.from(s.values()));
over 4 years ago · Santiago Trujillo Denunciar

0

Puede pasar una función de "reemplazo" a JSON.stringify :

 const fooBar = { foo: new Set([1, 2, 3]), bar: new Set([4, 5, 6]) }; JSON.stringify( fooBar, (_key, value) => (value instanceof Set ? [...value] : value) );

Resultado:

 "{"foo":[1,2,3],"bar":[4,5,6]}"

toJSON es un artefacto heredado, y un mejor enfoque es usar un replacer personalizado , consulte https://github.com/DavidBruant/Map-Set.prototype.toJSON/issues/16

over 4 years ago · Santiago Trujillo Denunciar

0

Si bien todo lo anterior funciona, sugiero que establezca una subclase y agregue un método toJSON para asegurarse de que se encadene correctamente. Especialmente si vas a estar tensando a menudo. Uso conjuntos en mis tiendas Redux y necesitaba asegurarme de que esto nunca fuera un problema.

Esta es una implementación básica. Nombrar es solo para ilustrar el punto, elige tu propio estilo.

 class JSONSet extends Set { toJSON () { return [...this] } } const set = new JSONSet([1, 2, 3]) console.log(JSON.stringify(set))
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