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.
		
		
		
		
		
			
		
			
				
					
					
						
							27 lines
						
					
					
						
							897 B
						
					
					
				
			
		
		
	
	
							27 lines
						
					
					
						
							897 B
						
					
					
				| 'use strict'; | |
| // https://github.com/tc39/proposal-iterator-helpers | |
| var $ = require('../internals/export'); | |
| var iterate = require('../internals/iterate'); | |
| var aCallable = require('../internals/a-callable'); | |
| var anObject = require('../internals/an-object'); | |
| 
 | |
| var $TypeError = TypeError; | |
| 
 | |
| $({ target: 'Iterator', proto: true, real: true, forced: true }, { | |
|   reduce: function reduce(reducer /* , initialValue */) { | |
|     anObject(this); | |
|     aCallable(reducer); | |
|     var noInitial = arguments.length < 2; | |
|     var accumulator = noInitial ? undefined : arguments[1]; | |
|     iterate(this, function (value) { | |
|       if (noInitial) { | |
|         noInitial = false; | |
|         accumulator = value; | |
|       } else { | |
|         accumulator = reducer(accumulator, value); | |
|       } | |
|     }, { IS_ITERATOR: true }); | |
|     if (noInitial) throw $TypeError('Reduce of empty iterator with no initial value'); | |
|     return accumulator; | |
|   } | |
| });
 | |
| 
 |