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

182
Vistas
Cómo agregar valor a una matriz de objetos en reaccionar

Quiero cambiar el valor del objeto de índice 0 'sm: verdadero' y en la segunda verificación crear un nuevo objeto y cambiar el valor de 'xl: verdadero' del índice 1

 const [size, setSizes] = useState([{sm:false, md:false, lg:false, xl:false,}]) const sizeHandler=(index, value)=> { on first check index is 0 & value = sm:true on secondcheck index is 1 & value = xl:true if(index===0 size.map(()=>{ setSize() }) }
 <FormGroup> <FormControlLabel control={<Checkbox />} label="SM" onChange={()=>sizeHandler(0,{sm:true})} /> </FormGroup> <FormGroup> <FormControlLabel control={<Checkbox />} label="XL" onChange={()=>sizeHandler(1,{xl:true})} /> </FormGroup>

el resultado debería ser así: [{sm:true, md:false, lg:false, xl:false}, {sm:false, md:false, lg:false, xl:true}]

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

0

Soy relativamente nuevo en js, así que espero que alguien más sabio actualice/corrija este intento de respuesta a continuación.

Sin entrar en la interfaz de usuario (FormGroup, FormControlLabel), intentará centrarse en la tarea/requisito real en cuestión.

Dado:

  1. Una matriz, inicialmente de tamaño 1, con un objeto que tiene 4 propiedades específicas.
  2. El tamaño de la matriz puede aumentar (no estoy seguro si también disminuirá) y si se invoca con el índice '1' (aunque el tamaño de la matriz sea 1), no debe haber ningún error

Requisito: según el 'índice', cree elementos de matriz adicionales y actualice el elemento correspondiente (por ejemplo, si 'índice' es 1, luego actualice el segundo elemento) con el valor que se envía para reemplazar solo una parte del objeto identificado en la posición 'índice'.

Fragmento para una comprobación rápida:

 const fixedObj = { sm: false, md: false, lg: false, xl: false }; const dynamicArray = [fixedObj]; /* const [size, setSizes] = useState([{sm:false, md:false, lg:false, xl:false,}]) */ const sizeHandler = (index, value) => { // First capture the current array-length const currArrLen = dynamicArray.length; if (!(index < currArrLen)) { // if 'index' is NOT within the array-length for (let i = currArrLen; i < index; i++) { // increase the array-size to match index dynamicArray.push(fixedObj); // initialize each new array-element using the fixedObj tempate }; }; // Now, target the specific array-element, use spread operator to use template, followed by 'value' // and update the specific array-element. dynamicArray[index] = { ...fixedObj, ...value }; }; sizeHandler(0, { sm: true }); console.log('on first check, update sm to true at index 0, array: ', dynamicArray, '\n\n\n'); sizeHandler(1, { xl: true }); console.log('on second check update xl to true at index 1, array: ', dynamicArray, '\n\n\n');

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