reducer example

Example 1: how to use reduce in 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

// 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 3: react/redux reducers sintaxe

const reduxSinaxe = (state = [], action) => {
  switch (action.type) {
    case "@smthg/ACTION":
      const { anyConst } = action;
      return [...state, anyConst];

    default:
      return state;
  }
};

export default reduxSinaxe;

Example 4: Reducer

// Arrow function
reduce((accumulator, currentValue) => { ... } )
reduce((accumulator, currentValue, index) => { ... } )
reduce((accumulator, currentValue, index, array) => { ... } )
reduce((accumulator, currentValue, index, array) => { ... }, initialValue)

// Callback function
reduce(callbackFn)
reduce(callbackFn, initialValue)

// Inline callback function
reduce(function callbackFn(accumulator, currentValue) { ... })
reduce(function callbackFn(accumulator, currentValue, index) { ... })
reduce(function callbackFn(accumulator, currentValue, index, array){ ... })
reduce(function callbackFn(accumulator, currentValue, index, array) { ... }, initialValue)

Example 5: reduce method

The reduce() method executes a reducer function (that you provide) on each element of the array, resulting in single output value.

The reducer function takes four arguments:
Accumulator (acc)
Current Value (cur)
Current Index (idx)
Source Array (src)

//syntax
arr.reduce(callback( accumulator, currentValue, [, index[, array]] )[, initialValue])
//example flatten an array

let flattened = [[0, 1], [2, 3], [4, 5]].reduce(
  ( accumulator, currentValue ) => accumulator.concat(currentValue),
  []
)