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

193
Vistas
Cómo iterar sobre una matriz y guardar datos usando ganchos

La idea es iterar sobre una matriz y guardar (o actualizar) valores.

 const [skills, setSkills] = useState([]); useEffect(() => { Object.entries(array).forEach(([k, v]) => { console.log("The skill is: ", k, " and value: ", v) setSkills({ ...skills, [k]: v }) }); }, [array]);

La salida es:

 The skill is: 1 and value: 30 The skill is: 2 and value: 40 The skill is: 3 and value: 90

Eso está bien y asumo que las "habilidades" deberían ser:

 {1: 30, 2: 40, 3: 90} 1: 30 2: 40 3: 90

pero en realidad, solo guarda la última entrada. Quiero decir, veo lo siguiente:

 {3: 90} 3: 90

Por favor, alguien puede explicar por qué? ¿Y cómo hacerlo de la manera correcta? ¡¡¡Gracias!!!

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

0

Las habilidades son array of objects al principio, pero las cambia a un single object en el bucle, por eso solo ve la última salida en el estado

esto debería solucionar tu problema

 useEffect(() => { Object.entries(json_h).forEach(([k, v]) => { console.log("The skill is: ", k, " and value: ", v) setSkills([ ...skills, {[k]: v} ]) // notice changes here }); }, [json_h]);

aunque sugiero guardar los nuevos valores en una matriz temporal y luego cambiar el estado una vez que esto eliminará las llamadas innecesarias a setState

 useEffect(() => { let tempArr = []; Object.entries(json_h).forEach(([k, v]) => { console.log("The skill is: ", k, " and value: ", v) tempArr.push({[k]: v}) }); setSkills([...skills, ...tempArr]) }, [json_h]);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Tu puedes hacer:

 const [skills, setSkills] = useState([]) useEffect(() => { setSkills([ ...skills, ...Object.entries(json_h).map(([k, v]) => ({[k]: v})), ]) }, [json_h])
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