Refactoring JS function and Removing conditional out of loop

Viewed 18

As title explains im trying to understand the best way to refactor my function and also remove my if statement from the loop? Any guidance would be appreciated. As I have an idea that me else condition is useless.

function quantitySum(array) {
  let sum = 0;
  for (let i = 0; i < array[0].length; i++) {
    if (array[0].length > 0) {
      sum += parseFloat(array[0][i].f0_);
    } else {
      sum === 0;
    }
  }

  return sum;
}
3 Answers

You don't need the if/else condition at all as if there are no items in array[0], there will be no iteration.

    function quantitySum(array) {
      let sum = 0;
      for (let i = 0; i < array[0].length; i++) {
         sum += parseFloat(array[0][i].f0_);
      }
      return sum;
    }

You may use Array reduce function

function sum = (array) => {
    return array.reduce((accumulator, current) => accumulator += parseFloat(current.f0_)) || 0;
}

This is a bit extreme, but you could go with Array#reduce inside an ES6 arrow function and dramatically reduce the code

const quantitySum = array => array[0]?.reduce((b,a) => b+parseFloat(a.f0_),0) ?? 0;

let n = [[{f0_:5}, {f0_:6}]]
let o = []
console.log(quantitySum(n))
console.log(quantitySum(o))

Related