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

77
Vistas
¿Cómo actualizo uno de los campos de la matriz?

Tengo una matriz como esta:

 a=[{id:1 , operand:2 ,children:[{a:1]{b:2}]

Y hago esto cuando quiero agregar un nuevo campo:

 const [items, setItems] = useState(a); const gettableData = (value) => { let operanList = items; let repeatListError = tableData.filter((i) => i.operandId === value.operandId); if (!repeatListError.length > 0) operanList.push(value); setTableData(operanList); };

Este método se llama cada vez que hago clic en un botón. Quiero verificar el operando cuando agrego un nuevo objeto, si solo hay una actualización de children.like:

 value=[{id:1 , operand:2 ,children:[{a:1]{b:2}{c:3}{d:4}]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Primero vuelva a formatear el valor como el siguiente. Lo que tiene es incorrecto en la sintaxis:

 const value=[{id:1 , operand:2 ,children:{a:1,b:2,c:3,d:4}}]

Así puedes cambiar los niños dentro de los objetos que están en tu matriz:

 const list = [ { id: 1, operand: 2, children: { a: 1, b: 2, c: 3, d: 4 } }, { id: 2, operand: 3, children: { a: 1, b: 2, c: 3, d: 4 } }, ]; let newList = [...list]; let updatedChildren = { ...newList[1].children, e: 5, f: 6 }; let updatedItem = { ...newList[1], children: updatedChildren }; newList.splice(1, 1, updatedItem); console.log(newList); setState(newList);

creas una nueva instancia de la matriz. actualice el atributo de niños de su elemento deseado (en este caso, elegí 1). luego actualice todo el objeto que está en su matriz (contiene la identificación y el operando y los niños). y finalmente mutar la nueva lista reemplazando el elemento original por el nuevo. En el método de empalme, recuerde que el segundo número siempre debe ser uno, ya que eliminará un elemento y el primer número dado debe ser el índice del elemento que se necesita cambiar (en este caso, elegimos uno). luego puede continuar configurando el estado como desee ya que tiene una lista nueva y actualizada.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Veo algunas inconsistencias en los nombres de las variables utilizadas en su código, por ejemplo, ¿dónde está tableData ? ¿Son los items que forman parte del estado?

No entiendo si los niños son una matriz de objetos o simplemente un objeto con pares de valores clave.

De todos modos, como mencioné en mi comentario, la forma más fácil de lograr esto es usando el mapa. Considérelo como una implementación genérica e intente usarlo en su código.

 const a=[{id:1 , operand:2 ,children:[{a:1]{b:2}] // What is the data stucture of children? Is it array of objects or just object?
 const [items, setItems] = useState(a); const gettableData = (value) => { // creating a copy is not required as map will return a new array. // map => filter + modify, so use map let updatedList = tableData.map((i) => { if (i.operandId === value.operandId) { // match found, so update children return { ...i, // first, copy everything from i children: [ // then update children, and since children is an array of objects ...i.children, // first copy every key of i's children ...value.children // then copy value's children ] } } return i; // no match? return i as it is. }); setItems(updatedItems)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Tienes que poner la matriz en otra variable y decirle que si tiene hijos, la recordará en el campo de hijos y le establecerá un nuevo valor.

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