sum array from map result dynamically using javascript

Viewed 15977

I am getting the array from multidimensional array using map. Below is my code

 var data = [{"name":"ramu","id":"719","gmail":"ramu@gmail.com","ph":988989898,"points":36},
        {"name":"ravi","id":"445","gmail":"ravi@gmail.com","ph":4554545454,"points":122},
        {"name":"karthik","id":"866","gmail":"karthik@gmail.com","ph":2332233232,"points":25}]          
var result = data.map(function(arr, count) { 
  return arr.points;
});

Output is [36, 122, 25]. But i need the sum as 183?

3 Answers

Use Array#reduce method to get the sum of the property.

var data = [{"name":"ramu","id":"719","gmail":"ramu@gmail.com","ph":988989898,"points":36},
        {"name":"ravi","id":"445","gmail":"ravi@gmail.com","ph":4554545454,"points":122},
        {"name":"karthik","id":"866","gmail":"karthik@gmail.com","ph":2332233232,"points":25}]          


var result = data.reduce(function(tot, arr) { 
  // return the sum with previous value
  return tot + arr.points;

  // set initial value as 0
},0);

console.log(result);

Use Array's reduce() like the following:

var data = [{"name":"ramu","id":"719","gmail":"ramu@gmail.com","ph":988989898,"points":36},
    {"name":"ravi","id":"445","gmail":"ravi@gmail.com","ph":4554545454,"points":122},
    {"name":"karthik","id":"866","gmail":"karthik@gmail.com","ph":2332233232,"points":25}];
  
var result = data.reduce((sum, item) => sum + item.points ,0);
console.log(result);

just write follwing code after your original code

var result = result.reduce(add, 0);

function add(a, b) {
    return a + b;
}

console.log(result);
Related