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

250
Vistas
La mejor manera de alterar la matriz de objetos dentro de un objeto (usando una ruta de cadena)

Esto puede ser más simple de lo que creo, pero ¿existe una manera fácil de modificar la matriz dentro de este objeto usando una cadena?

 var temp = { members: [ {file_name: 'abc', file_link: 'www'} ] }

Esto es lo que estoy tratando de lograr:

 const name = "members[0].file_name" // STRING temp = {...temp, [name]: 'changed'}

Salida que me está dando:

ingrese la descripción de la imagen aquí

Sí, puedo dividir esa cadena para darme las claves y el índice y luego cambiar el objeto de la manera normal, pero me preguntaba si hay una manera más fácil de hacerlo.

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

0

Puede usar la función eval() que devolverá el objeto que desea de acuerdo con una ruta

 const temp = { members: [{ file_name: 'abc', file_link: 'www' }] } const path = "members[0].file_name"; // Obtain last key (file_name) const lastKey = path.split(".").at(-1); // Obtain the path to the last key (members[0]) const previousPath = path.substr(0, path.length - (lastKey.length + 1)); // Get the object with the path (temp.members[0]) const e = eval(`temp.${previousPath}`) // Modify object e[lastKey] = "xyz"; console.log(temp)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede echar un vistazo a la función set de lodash que toma una ruta de cadena y devuelve el objeto anidado.

lodash hace el análisis por usted, por lo que no tiene que hacerlo

https://dustinpfister.github.io/2018/12/04/lodash_set/

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes lograr esto de la siguiente manera

 var temp = { members: [ {file_name: 'abc', file_link: 'www'} ] } const name = "file_name" // STRING temp.members[0][name] = "changed"; console.log(temp);

O así:

 var temp = { members: [ {file_name: 'abc', file_link: 'www'} ] } const name = "file_name"; const arr = "members"; temp[arr][0][name] = "changed"; console.log(temp);

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