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

277
Vistas
¿Cómo acceder a una propiedad anidada de un objeto usando una cadena?

Tengo la siguiente cadena:

 const str = "prop1.prop2.prop3"

Quiero usar esta cadena para acceder a la propiedad prop3 del siguiente objeto:

 const obj = { prop1: { prop2:{ prop3:{ // ---- destination point } } } }

Pero no soy capaz de averiguar cómo hacerlo? debe haber algo que siga agregando obj[currentProp] y así sucesivamente. y... ¿no hay un método más rápido? Me temo que estoy perdiendo el tiempo en algo que se puede lograr más fácilmente.

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

0

Este sería mi enfoque:

 const access = (path, object) => { return path.split('.').reduce((o, i) => o[i], object) } const obj = { prop1: { prop2: { prop3: { value: 'foo' } } } } const str = 'prop1.prop2.prop3' console.log(access(str, obj)) // {"value": "foo"}
about 4 years ago · Juan Pablo Isaza Denunciar

0

diferentes formas de acceder a una propiedad anidada de un objeto

usando una función accessDeepProp con dos argumentos, el objeto y la ruta de la propiedad anidada.

forma recursiva:

 function accessDeepProp(obj, path) { if (!path) return obj; const properties = path.split("."); return accessDeepProp(obj[properties.shift()], properties.join(".")); }

Forma de bucle for:

 function accessDeepProp(obj, path) { const properties = path.split("."); for (let i = 0; i < properties.length; i++) { if (!obj) return null; obj = obj[properties[i]]; } return obj; }

Forma de evaluación: never_use_eval!

 function accessDeepProp(objName, path) { try { return eval(`${objName}.${path}`); } catch (e) { return null; } }

también podría usar el método de obtención de lodash

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede combinar split con forEach de la siguiente manera:

 const str = "prop1.prop2.prop3" const obj = { prop1: { prop2:{ prop3:{ a: "b", c: "d" } } } } var srch = obj; str.split(".").forEach(item => (srch = srch[item])); console.log(srch); // { a: "b", c: "d"} console.log(obj);

split convierte el valor de str en una matriz, que luego se repite y en cada iteración, srch obtiene un nivel más profundo.

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