what does the reduce function do in javascript code example

Example 1: reduce javascript

const sum = array.reduce((accumulator, element) => {
  return accumulator + element;
}, 0);
// An example that will loop through an array adding
// each element to an accumulator and returning it
// The 0 at the end initializes accumulator to start at 0
// If array is [2, 4, 6], the returned value in sum
// will be 12 (0 + 2 + 4 + 6)

const product = array.reduce((accumulator, element) => {
  return accumulator * element;
}, 1);
// Multiply all elements in array and return the total
// Initialize accumulator to start at 1
// If array is [2, 4, 6], the returned value in product
// will be 48 (1 * 2 * 4 * 6)

Example 2: reduce object to array javascript

var arr = [{x:1},{x:2},{x:4}];

arr.reduce(function (a, b) {
  return {x: a.x + b.x}; // returns object with property x
})

// ES6
arr.reduce((a, b) => ({x: a.x + b.x}));

// -> {x: 7}

Example 3: reduce

// Array.prototype.reduce()

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

Example 4: syntax of reduce in js

[1,2,3,4,5].reduce((acc, current)=>acc+current, 0)

Example 5: .reduce mdn

arr.reduce(callback( accumulator, currentValue[, index[, array]] )[, initialValue])

Example 6: reduce method javascript

// Reduce() method executes a callback function that is passed in
// on each element of the array, resulting in single output value.
const array1 = [1, 2, 3, 4];
const callback = (accumulator, currentValue) => accumulator + currentValue;

// 1 + 2 + 3 + 4
console.log(array1.reduce(callback));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(callback, 5));
// expected output: 15 because the initial value is 5.

// This is how Reduce works.
// This is a myReduce method which takes a callback and an optional argument 
// of a default accumulator. If myReduce only receives one argument, then 
// myReduce will use the first element as the accumulator.

Array.prototype.myReduce = function(callback, acc) {
    if (!acc) {
        acc = this.shift();
    }
    this.forEach(function(element) {
        acc = callback(acc, element)
    })
    return acc;
}