Nodejs Array Reduce reduce(f, value)

Here you can find the source of reduce(f, value)

Method Source Code

// Description: Extending all arrays by extending Array Prototype in JavaScript

// Note/*from w w w . j ava2  s  .  c o  m*/
// 1. JavaScript provides a set of methods for acting on arrays. These methods are functions stored in Array.prototype.
// 2. Array.prototype can be augmented to add custom array functionality.
// 3. Adding a function to Array.prototype, makes it available to every array.

// Adding a method to Array.prototype to extend all arrays.
Array.prototype.reduce = function(f, value) {
    var i;
    for (i = 0; i < this.length; i += 1) {
        value = f(this[i], value);
    }

    return value;
};

// A sample array of numbers
var data = [ 4, 8, 15, 16, 23, 42 ];

// A function to add two numbers.
var add = function(a, b) {
    return a + b;
};

// A function to multiple two numbers.
var mult = function(a, b) {
    return a * b;
};

// Invoke the data's reduce method, passing in the add function.
var sum = data.reduce(add, 0); // The sum is 108

// Invoke the reduce method again, this time passing in the multiply function.
var product = data.reduce(mult, 1); // The product is 7418880

console.log("sum: " + sum);
console.log("product: " + product);

Related

  1. reduce(f, initial)
    var arr = [0,1,2,3,4];
    var sum = function(total, newValue) { return total + newValue; };
    Array.prototype.reduce = function(f, initial) {
        var acc = initial;
        for (var i = 0; i < this.length; i++) {
            acc = f(acc, this[i]);
        return acc;
    };
    ...
    
  2. reduce(f, value)
    Array.prototype.reduce = function (f, value) { 
        for (var i = 0; i < this.length; i++) { 
            value = f(this[i], value)
        return value
    
  3. reduce(f, value)
    Array.prototype.reduce = function (f, value) {
      for (var i = 0, len = this.length; i < len; i++) {
        value = f(this[i], value);
      return value;
    };
    var superheroes = ['superman', 'iron man', 'spiderman', 'batman'];
    var totalLength = superheroes.reduce(function (elem, acc) {
      return elem.length + acc;
    ...
    
  4. reduce(f, value)
    var data = [ 4, 8, 15, 16, 23, 42 ];
    Array.prototype.reduce = function(f, value) {
        var i;
        for (i = 0; i < this.length; i += 1) {
            value = f(this[i], value);
        return value;
    };
    var add = function(a, b) {
    ...
    
  5. reduce(f, value)
    var is_array_01 = function (value) {
      return value &&
        typeof value === 'object' &&
        value.constructor === Array;
    };
    var is_array = function (value) {
      return value &&
        typeof value === 'object'  &&
        typeof value.length === 'number'  &&
    ...
    
  6. reduce(fn, initial)
    Array.prototype.reduce = function(fn, initial)
        var r, i;
        initial ? r = initial : r = this[0];
        for (i=1;i<this.length;i++)
            r = fn(r, this[i]);
        return r;
    ...
    
  7. reduce(fn, initialValue)
    Array.prototype.reduce = function (fn, initialValue) {
      let acc = initialValue
      for (var i = 0; i < this.length; i++) {
        acc = fn(acc, this[i], i)
      return acc
    Array.prototype.forEach = function (fn) {
      this.reduce((acc, curr, i) => {
    ...
    
  8. reduce(fun /* , initial */)
    if (!Array.prototype.reduce) {
      Array.prototype.reduce = function(fun ) {
        var len = this.length >>> 0;
        if (typeof fun != "function")
          throw new TypeError();
        if (len == 0 && arguments.length == 1)
          throw new TypeError();
        var i = 0;
        if (arguments.length >= 2) {
    ...
    
  9. reduce(fun /*, initial*/)
    Array.prototype.reduce = function(fun )
      var len = this.length;
      if (typeof fun != "function") {
        throw new TypeError();
      if (len == 0 && arguments.length == 1) {
        throw new TypeError();
      var i = 0;
      if (arguments.length >= 2) {
        var rv = arguments[1];
      } else {
        do {
          if (i in this) {
            rv = this[i++];
            break;
          if (++i >= len) {
            throw new TypeError();
        } while (true);
      for (; i < len; i++) {
        if (i in this) {
          rv = fun.call(null, rv, this[i], i, this);
      return rv;
    };