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.
28 lines
802 B
28 lines
802 B
'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); |
|
} }); |
|
};
|
|
|