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

165
Vistas
¿Immutablejs permite buscar con un tipo de referencia?

Tengo un fragmento de código que se parece a esto

 const { Map } = require('immutable@4.0.0') let map = new Map().setIn(["user",["alex","country"]],"Poland") map.getIn(["user",["alex","country"])

Espero que lo anterior devuelva "Poland" , pero no es así. Supongo que el tipo de referencia ["alex", "country"] se serializa de manera diferente al configurar y consultar. Cualquier ayuda sobre cómo lograr esto sería útil. Evito tener que manejar la serialización de Array manualmente

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La matriz no está serializada. immutable usa el objeto real (su referencia) como clave y el operador igual para comparar claves. Eso significa que la primera ["alex","country"] y la segunda ["alex","country"] son dos claves diferentes.

Este fragmento muestra el problema:

 if (['alex', 'country'] !== ['alex', 'country']) { console.log('The references are different'); }

tengo 3 soluciones:

1. Almacenar una referencia en una variable

Puede almacenar una referencia a la matriz en una variable para usarla como clave:

 const { Map } = require('immutable'); const arr = ['alex', 'country']; let map = new Map().setIn(['user', arr], 'Poland'); console.log(map.getIn(['user', arr]));

2. Serialice la matriz usando toString

Una solución alternativa es serializar los arreglos usando toString :

 const { Map } = require('immutable@4.0.0') let map = new Map().setIn(["user",["alex","country"].toString()],"Poland") map.getIn(["user",["alex","country"].toString()])

Fragmento de ejemplo:

 if (['alex', 'country'].toString() === ['alex', 'country'].toString()) { console.log('The serialized arrays are equal'); }

Pero recuerde que la serialización de diferentes matrices puede generar la misma cadena:

 if (['alex', 'country'].toString() === ['alex,country'].toString()) { console.log('Serializing different arrays can yield the same string'); }

3. Aplane la matriz

Otro enfoque es aplanar la matriz de ruta:

 const { Map } = require('immutable'); let map = new Map().setIn(['user', ['alex', 'country']].flat(), 'Poland'); console.log(map.getIn(['user', ['alex', 'country']].flat()));
about 4 years ago · Juan Pablo Isaza 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