0

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;
}
1
  • sum === 0 doesn't do anything. It's a comparison, not an assignment, but you're not doing anything with the comparison result. Commented Sep 23, 2022 at 18:24

3 Answers 3

1

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;
    }
Sign up to request clarification or add additional context in comments.

Comments

0

You may use Array reduce function

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

Comments

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))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.