| | |
| | | 'use strict'; |
| | | // https://tc39.github.io/proposal-setmap-offrom/ |
| | | var bind = require('../internals/function-bind-context'); |
| | | var call = require('../internals/function-call'); |
| | | var aCallable = require('../internals/a-callable'); |
| | | var aConstructor = require('../internals/a-constructor'); |
| | | var bind = require('../internals/function-bind-context'); |
| | | var iterate = require('../internals/iterate'); |
| | | |
| | | var push = [].push; |
| | | |
| | | module.exports = function from(source /* , mapFn, thisArg */) { |
| | | var length = arguments.length; |
| | |
| | | array = []; |
| | | if (mapping) { |
| | | n = 0; |
| | | boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined, 2); |
| | | boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined); |
| | | iterate(source, function (nextItem) { |
| | | array.push(boundFunction(nextItem, n++)); |
| | | call(push, array, boundFunction(nextItem, n++)); |
| | | }); |
| | | } else { |
| | | iterate(source, array.push, { that: array }); |
| | | iterate(source, push, { that: array }); |
| | | } |
| | | return new this(array); |
| | | }; |