Mi tarea es llamar a esta función y devolver el valor de la suma de todos los números en la matriz que se puede dividir entre 3. El problema es que no sé cómo hacer que el valor de retorno de la función en JS. ¿Puedes ayudar por favor? Gracias

function sumNumbersBy3(...numberArray) {
        for(let i = 0; i < numberArray.length; i++)
        {
            if (numberArray[i]%3 == 0)
                return
        }
    }
    console.log("sumNumbersBy3", sumNumbersBy3(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) === 18);
1
Lubos Sakmary 30 dic. 2019 a las 15:56

2 respuestas

La mejor respuesta

Debe tener una variable para sumar números que satisfaga la condición numberArray[i] % 3 == 0:

function sumNumbersBy3(numberArray) {
  let sum = 0
  for(let i = 0; i < numberArray.length; i++)
  {
      if (numberArray[i] % 3 == 0)
          sum += numberArray[i];
  }
  return sum;
}

Además, puede usar el método reduce:

const result = arr.reduce((a, c, i) => {
  (c % 3 == 0) ? a += c : 0;
  return a;
}, 0);

Un ejemplo:

function sumNumbersBy3(numberArray) {
  let sum = 0
  for(let i = 0; i < numberArray.length; i++)
  {
      if (numberArray[i] % 3 == 0)
          sum += numberArray[i];
  }
  return sum;
}

console.log("sumNumbersBy3: ", sumNumbersBy3([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]));

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = arr.reduce((a, c, i) => {
    (c % 3 == 0) ? a += c : 0;
    return a;
}, 0);
console .log(`Using reduce method: ${result}`);
 
1
StepUp 30 dic. 2019 a las 13:10
function sumNumbersBy3(...numberArray) {
    let sum = 0;
    for (let i = 0; i < numberArray.length; i++) {
        if (numberArray[i] % 3 == 0)
            sum += numberArray[i];
    }
    return sum;
}
console.log("sumNumbersBy3", sumNumbersBy3(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
1
kalpaj agrawalla 30 dic. 2019 a las 13:00