• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

146
Vistas
Modificando cada valor de la matriz con el ayudante de inmutabilidad

Estoy luchando por descubrir cuál es la mejor práctica para modificar cada valor en una matriz de objetos usando el asistente de inmutabilidad .

Por ejemplo, si tuviera esto en mi estado:

 this.state = { items: [ { name: "test", subItems: [ {val: false}, {val: true}, {val: false} ] }, { name: "test2", subItems: [ {val: true}, {val: true}, {val: false} ] } ] }

Y quiero establecer cada val en false , ¿cómo podría hacerlo?

Podría hacerlo uno a la vez, pero debe haber una mejor manera:

 let elements = update(this.state.items, { [idx1]:{ subItems:{ [idx2]:{ val: { $set: false } } } } });
over 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Ciertamente es posible, pero es todo menos legible o comprensible a primera vista.

 const nextState = update(state, { items: { $apply: (items) => { return items.map(item => { return update(item, { subItems: { $apply: (subItems) => { return subItems.map(subItem => { return update(subItem, { val: { $set: false } }) }) } } }) }) } } });
over 3 years ago · Santiago Trujillo Denunciar

0

Para una solución ES6 con inmutabilidad, desestructuración y sin ayudantes:

 this.setState({ // This is if you have other state besides items. ...this.state, items: this.state.items.map(item => ({ ...item, subItems: item.subItems.map(subItem => ({ ...subItem, val: false // or eg setter as a function of (item, subItem) })) })) });

es más fácil para mí que el asistente de actualización.

over 3 years ago · Santiago Trujillo Denunciar

0

prueba esto

 this.state = { items: [ { name: "test", subItems: [ {val: false}, {val: true}, {val: false} ] }, { name: "test2", subItems: [ {val: true}, {val: true}, {val: false} ] } ] }

usar programación funcional

 this.state.items .filter((item) => item.name === test).subitems .map((subItem) => { subitem.forEach( (key) => { { [key]: !subitem[key] } }) })
over 3 years ago · Santiago Trujillo 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda