Search code examples
javascriptarraysfor-of-loop

Use a for of loop to calculate multiply elements in an array


I'm a newbie to JavaScript and I have an exercise about for...of but it failed. It returned NaN.

Where am I doing wrong and what do I need?

Code:

var arr = [];

function multiply(arr) {
  for (var a of arr) {
    a *= arr[a];
  }
  return a;
}
console.log(multiply([2, 3, 4])); // expect: 24


Solution

  • See your code modified below. Now working:

    var arr = undefined;
    
    function multiply(arr) {
      if (!arr || !arr.length) {     // if the array is undefined or has no elements, return null
          return null;
      }                              // otherwise, continue to do the calculation, it's an array with values
      var result = 1;                // start our result in 1
      for (var a of arr) {
        result *= a;                 // increase the result by multiplying the
                                     // previous value for every value in the array
      }
      return result;                 // finally return
    }
    console.log(multiply([2, 3, 4])); // expect: 24
    console.log(multiply([]));        // expect: null: 0 elements
    console.log(multiply(arr));       // expect: null: arr var is undefined
    console.log(multiply());          // expect: null: no argument provided