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

187
Vistas
Javascript: inicialización rápida de objetos por lista

Supongamos que tengo el objeto a

 const a = { string1: 'prop1', val1: 'value1', string2: 'prop2', val2: 'value2' }

entonces puedo instanciar fácilmente un nuevo objeto constante b

 const b = { [a['string1']]: a['val1'], [a['string2']]: a['val2'] };

lo que resultará en

 b = { prop1: 'value1', prop2: 'value2' }

Pero, ¿y si en cambio tengo una lista lst

 const lst = [['prop1','value1'], ['prop2','value2']]

y quiero instanciar b de lst de una manera ordenada? Lo más lejos que llegué fue

 const b = {}; for(const tpl of lst){ b[tpl[0]] = tpl[1]; }

Pero a mí, que soy un gran fanático de los oneliners, no me gusta mucho este código. Entonces, ¿cómo puedo inicializar rápidamente b de una lista de propiedades?

EDITAR Parece que mi pregunta no se planteó de manera lo suficientemente abstracta. Permítanme volver a aclararlo. Supongamos que tengo la lista l = ['prop1', 'prop2'];

y la función fx(str) { return str.substring(1); } ¿Cómo podría ahora inicializar rápidamente el objeto b de tal manera que

 b = { prop1: 'rop1', prop2: 'rop2' }

No puedo hacer b= {[l[0]]=fx(l[0]), [l[1]]=fx(l[1])} ya que la lista l se genera dinámicamente y contendrá una cantidad desconocida de variables Entonces, de alguna manera, sería bueno hacer un bucle, por ejemplo, esta sintaxis inexistente

 b = { [[for str in l]] : fx(str) }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Tiene entradas allí, por lo que puede simplemente:

 Object.fromEntries(lst)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Como mencionó Uroš , Object.fromEntries(lst) es el mejor método para esto. Como alternativa puedes usar reduce .

 const lst = [['prop1','value1'], ['prop2','value2']] const b = lst.reduce(function(prev,curr){prev[curr[0]]=curr[1];return prev;},{}) console.log(b);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes usar el método .values()

 const b = {}; const lst = [ ['prop1', 'value1'], ['prop2', 'value2'], ]; for (const [key, value] of lst.values()) b[key] = value; console.log(b);

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