Search code examples
javascriptobjectreturn-value

How to add to a global variable with a functions return value (JavaScript)


I have a callback function which takes two parameter and a global variable that I would like to add to with the value returned from this function. However the variable remains the same. Please help!

let sum = 0;
const myArr = [{name: 'dj', value: '2'}, {name: 'kd', value: '3'}];

function addObjValue(arr, total) {
    arr.forEach(element => {
        const val = element.value;
        total += checkObjValue(val);
        console.log(total);
    })
}

function checkObjValue(x) {
    switch(x) {
        case '2':
            return 1;
            break;
        case '3':
            return 5;
            break;
    }
}

addObjValue(myArr, sum); // sum remains 0

Solution

  • You can make a local variable and save totals there, then just return total value

    function addObjValue(arr) {
        let total = 0
        arr.forEach(element => {
            const val = element.value;
            total += checkObjValue(val);
            console.log(total);
        })
        return total
    }
    

    And after that make your sum equal to returned value

    sum = addObjValue(myArr);
    

    Update One more thing. To get sum from an array you can use reduce method

    arr.reduce((totalSum, currenElement) => {
        return totalSum + currenElement.value
    }, 0 /*first value of totalSum (by default equal to the first element of the array)*/)