You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							29 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							29 lines
						
					
					
						
							1.1 KiB
						
					
					
				'use strict'; | 
						|
var $ = require('../internals/export'); | 
						|
var IS_PURE = require('../internals/is-pure'); | 
						|
var anObject = require('../internals/an-object'); | 
						|
var aFunction = require('../internals/a-function'); | 
						|
var getMapIterator = require('../internals/get-map-iterator'); | 
						|
var iterate = require('../internals/iterate'); | 
						|
 | 
						|
// `Map.prototype.reduce` method | 
						|
// https://github.com/tc39/proposal-collection-methods | 
						|
$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { | 
						|
  reduce: function reduce(callbackfn /* , initialValue */) { | 
						|
    var map = anObject(this); | 
						|
    var iterator = getMapIterator(map); | 
						|
    var noInitial = arguments.length < 2; | 
						|
    var accumulator = noInitial ? undefined : arguments[1]; | 
						|
    aFunction(callbackfn); | 
						|
    iterate(iterator, function (key, value) { | 
						|
      if (noInitial) { | 
						|
        noInitial = false; | 
						|
        accumulator = value; | 
						|
      } else { | 
						|
        accumulator = callbackfn(accumulator, value, key, map); | 
						|
      } | 
						|
    }, undefined, true, true); | 
						|
    if (noInitial) throw TypeError('Reduce of empty map with no initial value'); | 
						|
    return accumulator; | 
						|
  } | 
						|
});
 | 
						|
 |