| 12345678910111213141516171819 |
- var ctx = require('./$.ctx')
- , call = require('./$.iter-call')
- , isArrayIter = require('./$.is-array-iter')
- , anObject = require('./$.an-object')
- , toLength = require('./$.to-length')
- , getIterFn = require('./core.get-iterator-method');
- module.exports = function(iterable, entries, fn, that){
- var iterFn = getIterFn(iterable)
- , f = ctx(fn, that, entries ? 2 : 1)
- , index = 0
- , length, step, iterator;
- if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
- // fast case for arrays with default iterator
- if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
- entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
- } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
- call(iterator, f, step.value, entries);
- }
- };
|