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

323
Vistas
Si el objeto ya está en la matriz, quiero eliminar el objeto anterior y agregar el nuevo

Tengo una matriz de objetos y cuando el usuario selecciona una opción, agrega un objeto a la matriz. Quiero escribir un código para verificar si esta clave de objeto ya está en uno de los objetos de la matriz para reemplazar el anterior con el nuevo objeto. usuario seleccionado de la opción proporcionada ingrese la descripción de la imagen aquí

lo que significa que esta matriz no puede tener dos objetos con la misma clave, como

iMac 2021-Touch ID in keyboard

alguna solución estoy atascado aquí

editar:

 attribute.items.map((item, index2) => { return ( <div key={index2}> <input onChange={this.handleChange} type="radio" name={`${this.props.currentItem.name}-${attribute.name}`} value={item.value} /> </div>;

cuando el usuario selecciona la opción de uno de estos atributos, se agrega a una matriz que se enviará al carrito con el artículo

 handleChange = (e) => { const { name, value } = e.target; this.setState((prevState) => ({ selectedAttribute: [ ...prevState.selectedAttribute, { [name]: value } ], })); };

Estoy tratando de hacer algo como esto para evitar agregar dos o más objetos para el mismo atributo

 let alreadyAdded = this.state.selectedAttribute.some((element) => this.state.selectedAttribute.indexOf(element) !== -1);

si el usuario selecciona los atributos desde la primera vez, no habrá ningún problema; de lo contrario, si el usuario decidió cambiar el atributo, se agregará con el nuevo valor sin eliminar el anterior, la matriz de atributos tendrá más valores de los que debería, lo que causará un error

como verás en esta imagen

ingrese la descripción de la imagen aquí

[2]: https://i.stack.imgur.com/9OQPb.png

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

0

Puede usar el método array find o findIndex y el objeto hasOwnProperty algo así:

 const items = [ { key1: value1 }, { key2: value2 }, ]; const neededKey = 'key1'; const item = items.find((item) => item.hasOwnProperty(neededKey));

find : luego, si se encuentra - actualizar, de lo contrario insertar

findIndex : luego, si se encuentra - splice , de lo contrario inserte

pero si en su caso solo se usa 1 clave en cada elemento, ¿por qué no solo usar objetos como:

 const items = { key1: value1, key2: value2, }

y actualizarlo directamente?

si este es el estado de reacción, puede usar algo como:

 setState({ ...oldState, [neededKey]: neededValue, })

para actualizar tu estado

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