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.
		
		
		
		
		
			
		
			
				
					29 lines
				
				802 B
			
		
		
			
		
	
	
					29 lines
				
				802 B
			| 
								 
											3 years ago
										 
									 | 
							
								'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);
							 | 
						||
| 
								 | 
							
								  } });
							 | 
						||
| 
								 | 
							
								};
							 |