Sha256: b69451c14d5e8c7a4517c4a0f98108fb54e3a331d4960efead90b7555dec6249

Contents?: true

Size: 1.31 KB

Versions: 25

Compression:

Stored size: 1.31 KB

Contents

var aFunction = require('../internals/a-function');
var toObject = require('../internals/to-object');
var IndexedObject = require('../internals/indexed-object');
var toLength = require('../internals/to-length');

// `Array.prototype.{ reduce, reduceRight }` methods implementation
var createMethod = function (IS_RIGHT) {
  return function (that, callbackfn, argumentsLength, memo) {
    aFunction(callbackfn);
    var O = toObject(that);
    var self = IndexedObject(O);
    var length = toLength(O.length);
    var index = IS_RIGHT ? length - 1 : 0;
    var i = IS_RIGHT ? -1 : 1;
    if (argumentsLength < 2) while (true) {
      if (index in self) {
        memo = self[index];
        index += i;
        break;
      }
      index += i;
      if (IS_RIGHT ? index < 0 : length <= index) {
        throw TypeError('Reduce of empty array with no initial value');
      }
    }
    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
      memo = callbackfn(memo, self[index], index, O);
    }
    return memo;
  };
};

module.exports = {
  // `Array.prototype.reduce` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce
  left: createMethod(false),
  // `Array.prototype.reduceRight` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
  right: createMethod(true)
};

Version data entries

25 entries across 25 versions & 7 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/core-js/internals/array-reduce.js
disco_app-0.18.0 test/dummy/node_modules/core-js/internals/array-reduce.js
disco_app-0.18.2 test/dummy/node_modules/core-js/internals/array-reduce.js
tang-0.2.1 spec/tang_app/node_modules/core-js/internals/array-reduce.js
tang-0.2.0 spec/tang_app/node_modules/core-js/internals/array-reduce.js
tang-0.1.0 spec/tang_app/node_modules/core-js/internals/array-reduce.js
tang-0.0.9 spec/tang_app/node_modules/core-js/internals/array-reduce.js
enju_library-0.3.8 spec/dummy/node_modules/core-js/internals/array-reduce.js
condenser-0.3 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.2 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.1 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.0.12 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.0.11 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.0.10 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.0.9 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
condenser-0.0.8 lib/condenser/processors/node_modules/core-js-pure/internals/array-reduce.js
jester-data-8.0.0 node_modules/core-js/internals/array-reduce.js
ezii-os-5.2.1 node_modules/core-js/internals/array-reduce.js
ezii-os-2.0.1 node_modules/core-js/internals/array-reduce.js
ezii-os-1.1.0 node_modules/core-js/internals/array-reduce.js