UNPKG

906 BJavaScriptView Raw
1'use strict';
2// https://tc39.github.io/proposal-setmap-offrom/
3var bind = require('../internals/function-bind-context');
4var anObject = require('../internals/an-object');
5var toObject = require('../internals/to-object');
6var iterate = require('../internals/iterate');
7
8module.exports = function (C, adder, ENTRY) {
9 return function from(source /* , mapFn, thisArg */) {
10 var O = toObject(source);
11 var length = arguments.length;
12 var mapFn = length > 1 ? arguments[1] : undefined;
13 var mapping = mapFn !== undefined;
14 var boundFunction = mapping ? bind(mapFn, length > 2 ? arguments[2] : undefined) : undefined;
15 var result = new C();
16 var n = 0;
17 iterate(O, function (nextItem) {
18 var entry = mapping ? boundFunction(nextItem, n++) : nextItem;
19 if (ENTRY) adder(result, anObject(entry)[0], entry[1]);
20 else adder(result, entry);
21 });
22 return result;
23 };
24};