Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda