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

119
Vistas
Cómo actualizar un par clave/valor en una matriz anidada de objetos en Javascript

esta es mi estructura de datos:

 [ 0: key1: value, key2: value, array: 0: thisId: xxxxx, thisValue: value, 1: notThisId: someId, notThisValue: value, key3: value 1: key1: value key2: value array: 0: anotherId: id anotherValue: value key3: value ]

Hola, tengo una consulta con está regresando:

 thisIdRef: xxxxx, thisNewValue: newValue

¿Es posible actualizar el 'thisValue' anidado a 'thisNewValue' donde 'thisIdRef' es igual a 'thisId' o 'xxxxx'?

Hice algo similar a continuación usando findIndex y splice, pero esto es para un par clave/valor no anidado y no puedo averiguar cómo encontrar una identificación anidada, o si es posible.

 let newArray = oldArray; const index = newArray.findIndex(post => post._id === editedPostId) newArray.splice(index, 1, { ...newArray[index], post: editedContent })

Cualquier ayuda muy apreciada.

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

0

Asumiré que desea crear una nueva matriz, de modo que la matriz original y su estructura anidada no se modifiquen.

Aquí hay una función que podrías usar:

 function setDeep(original, editedPostId, editedContent) { return original.map(obj => { let i = obj.array.findIndex(item => item.thisId === editedPostId); if (i == -1) return obj; return { ...obj, array: Object.assign([], obj.array, { [i]: { ...obj.array[i], thisId: editedPostId, thisValue: editedContent } }) }; }); } // Example call let original = [{ key1: 1, key2: 2, array: [{ thisId: "xxxxx", thisValue: 3, }, { notThisId: "yyyy", notThisValue: 4, }], key3: 5 }, { key1: 6, key2: 7, array: [{ anotherId: "zzzzz", anotherValue: 8 }], key3: 9 }]; let editedPostId = "xxxxx"; let editedContent = 42; console.log(setDeep(original, editedPostId, editedContent));

Tenga en cuenta que el código que ha proporcionado para una estructura no anidada parece crear una nueva matriz, pero aún muta la matriz original. Cuando desee que el original permanezca intacto, debe tener cuidado de copiar en profundidad las partes afectadas.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La forma general sería:

 const found = parentArray.find(it => it.array[0] === theId) if (found) { found.array[1] = theValue }
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