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

194
Vistas
¿Cómo hacer que la clave y el valor no se sobrescriban dentro de un bucle for en un objeto?

Tengo esta función que toma dos listas como argumentos. La primera letra de cada elemento de la lista "L" es la identificación de una categoría de libros. Por ejemplo, "BKWR" y "BTSQ" son libros de la misma categoría porque comienzan con la misma letra "B". El entero positivo separado por espacio es el número de libros en esa categoría. Ahora lo que hace la función es que toma la primera lista y hace coincidir la segunda lista ya sea que la categoría del libro que comienza con la letra esté presente o no. Si está presente, suma el número. Por ejemplo, en la lista "L" hay dos categorías de libros que comienzan con "B", por lo que se supone que debe sumarlas.

Sin embargo, en lugar de sumar los dos, mi función sobrescribe el valor de la categoría "B" anterior. ¿Cómo puedo evitar que sobrescriba el valor?

 function extract(list,stocklist){ let newArr = []; for (let i = 0; i < stocklist.length; i++){ for (let j = 0; j < list.length; j++){ if (stocklist[i] == list[j][0]){ newArr.push(list[j]); } } } let selected = newArr.map((item) => item.split(' ')); let extracted = {}; for (let k = 0; k < selected.length; k++){ for (let l = 0; l < selected[k].length-1; l++){ let key = selected[k][l][0]; let value = selected[k][l+1]; extracted[key] = value; } } return extracted; } let L = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"]; let M = ["A", "B", "W"]; console.log(extract(L,M));

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

0

Si ya hay un valor para la clave, agréguelo en lugar de sobrescribirlo. Así que cambia

 extracted[key] = value;

a

 if (key in extracted) { extracted[key] += parseInt(value); } else { extracted[key] = parseInt(value); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

En realidad, necesita agregar el "valor" a su objeto extracted :

 function extract(list,stocklist){ let newArr = []; for (let i = 0; i < stocklist.length; i++){ for (let j = 0; j < list.length; j++){ if (stocklist[i] == list[j][0]){ newArr.push(list[j]); } } } let selected = newArr.map((item) => item.split(' ')); let extracted = {}; for (let k = 0; k < selected.length; k++){ for (let l = 0; l < selected[k].length-1; l++){ let key = selected[k][l][0]; let value = selected[k][l+1]; if(value) { extracted[key] = (+extracted[key] || 0) + +value; } } } return extracted; } let L = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"]; let M = ["A", "B", "W"]; console.log(extract(L,M));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí está la parte menor que te falta. Verifique la clave y resuma, o simplemente asigne el primer valor como:

 extracted[key] = extracted[key] ? extracted[key] + Number(value) : Number(value);
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