| 'use strict'; |
| // https://tc39.github.io/proposal-setmap-offrom/ |
| var $export = require('./_export'); |
| var aFunction = require('./_a-function'); |
| var ctx = require('./_ctx'); |
| var forOf = require('./_for-of'); |
| |
| module.exports = function (COLLECTION) { |
| $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) { |
| var mapFn = arguments[1]; |
| var mapping, A, n, cb; |
| aFunction(this); |
| mapping = mapFn !== undefined; |
| if (mapping) aFunction(mapFn); |
| if (source == undefined) return new this(); |
| A = []; |
| if (mapping) { |
| n = 0; |
| cb = ctx(mapFn, arguments[2], 2); |
| forOf(source, false, function (nextItem) { |
| A.push(cb(nextItem, n++)); |
| }); |
| } else { |
| forOf(source, false, A.push, A); |
| } |
| return new this(A); |
| } }); |
| }; |