Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

79
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda