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

201
Visualizações
Problemas en JavaScript con bucles y condiciones múltiples

Aquí está la pregunta:

"Escriba una función que agregueTodasLasCosasRaras que sume la suma de todos los números impares en la matriz2 a cada elemento menor de 10 en la matriz1. De manera similar, agregarTodasLasCosasRaras también debe sumar la suma de todos los números pares en la matriz2 a los elementos mayores de 10 en la matriz1.

BONIFICACIÓN: si algún elemento de matriz2 es mayor que 20, agregue 1 a cada elemento de matriz1".

Conseguí que la primera parte funcionara. Parece que no puedo averiguar cómo hacer que la segunda parte funcione. Esto es lo que he probado:

 function addingAllTheWeirdStuff(array1, array2){ // ADD CODE HERE let sumOdd = 0; let sumEven = 0; for (let i = 0; i < array2.length; i++) { if (array2[i] % 2 !== 0) { sumOdd += array2[i]; } else { sumEven += array2[i]; } } for (let i =0; i < array1.length; i++) { if (array1[i] < 10) { array1[i] += sumOdd; } else if (array1[i] > 10) { array1[i] += sumEven; } for (let i =0; i < array2.length; i++) { if (array2[i] > 20) { for (let i =0; i < array1.length; i++) { array1[i] += 1; return array1; } return array1; } } return array1; }

¿Alguna sugerencia sobre cómo hacer que la última parte de la pregunta funcione?

Gracias por adelantado.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

En primer lugar, eliminé algunas de las llaves innecesarias y las equilibré para que sea más legible (al menos para mí)

Luego eliminé su último bucle anidado porque era innecesario e ineficiente. Mientras recorre array2 para obtener sumOdd & sumEven , puede verificar al mismo tiempo si algún elemento es >20 y almacenarlo en una variable (mayor que greaterThan20 ). Luego, al agregar las sumas, puede verificar esa misma var para agregar 1

 function addingAllTheWeirdStuff(array1, array2) { // ADD CODE HERE let sumOdd = 0; let sumEven = 0; let greaterThan20 = false; // false by default for (let i = 0; i < array2.length; i++) { if (array2[i] % 2 !== 0) sumOdd += array2[i]; else sumEven += array2[i]; if (array2[i] > 20)// check if any element > 20 greaterThan20 = true; } for (let i = 0; i < array1.length; i++) { if (array1[i] < 10) array1[i] += sumOdd; else if (array1[i] > 10) array1[i] += sumEven; if (greaterThan20)// add the +1 if greater than 20 array1[i] += 1; } return array1; }
about 4 years ago · Juan Pablo Isaza Relatório

0

En su código, como alguien señaló, tenía una declaración de devolución en su ciclo interno que estaba saliendo del ciclo.

También agregué aquí una solución alternativa, solo por diversidad. Primero calcule sumas pares e impares usando filtro y reducción. También verifico si algún elemento tiene más de 20. Basado en el valor verdadero/falso de arr2.some, mapeo sobre el arr1

 const arr1 = [4, 5, 6, 7, 8, 9, 10, 11, 12] const arr2 = [6, 7, 8, 9, 10, 11, 12, 13, 14, 21] function addingAllTheWeirdStuff(arr1, arr2) { let oddSum = arr2.filter(el => el % 2 != 0).reduce((a, n) => a + n) let evenSum = arr2.filter(el => el % 2 == 0).reduce((a, n) => a + n) const over20 = arr2.some(el => el > 20) if (over20) { return arr1.map(el => el > 10 ? el += ++evenSum : el += ++oddSum) } else { return arr1.map(el => el > 10 ? el += evenSum : el += oddSum) } } console.log(addingAllTheWeirdStuff(arr1, arr2))

about 4 years ago · Juan Pablo Isaza Relatório

0

estaba usando return en el lugar equivocado, lo que hace que la función se detenga después del primer number>20 en lugar de continuar para todos los números

también puedes fusionar el primer y el último ciclo, solo lo dejé así para que sea más claro

 function addingAllTheWeirdStuff(array1, array2) { // ADD CODE HERE let sumOdd = 0; let sumEven = 0; for (let i = 0; i < array2.length; i++) { if (array2[i] % 2 !== 0) { sumOdd += array2[i]; } else { sumEven += array2[i]; } } for (let i = 0; i < array1.length; i++) { if (array1[i] < 10) { array1[i] += sumOdd; } else if (array1[i] > 10) { array1[i] += sumEven; } } // moved this outside of the above loop for (let i = 0; i < array2.length; i++) { if (array2[i] > 20) { for (let i = 0; i < array1.length; i++) { array1[i] += 1; // return array1; remove this line } } } return array1; // now return }
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