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.
		
		
		
		
		
			
		
			
				
					27 lines
				
				876 B
			
		
		
			
		
	
	
					27 lines
				
				876 B
			| 
											3 years ago
										 | // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
 | ||
|  | 'use strict'; | ||
|  | var toObject = require('./_to-object'); | ||
|  | var toAbsoluteIndex = require('./_to-absolute-index'); | ||
|  | var toLength = require('./_to-length'); | ||
|  | 
 | ||
|  | module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { | ||
|  |   var O = toObject(this); | ||
|  |   var len = toLength(O.length); | ||
|  |   var to = toAbsoluteIndex(target, len); | ||
|  |   var from = toAbsoluteIndex(start, len); | ||
|  |   var end = arguments.length > 2 ? arguments[2] : undefined; | ||
|  |   var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); | ||
|  |   var inc = 1; | ||
|  |   if (from < to && to < from + count) { | ||
|  |     inc = -1; | ||
|  |     from += count - 1; | ||
|  |     to += count - 1; | ||
|  |   } | ||
|  |   while (count-- > 0) { | ||
|  |     if (from in O) O[to] = O[from]; | ||
|  |     else delete O[to]; | ||
|  |     to += inc; | ||
|  |     from += inc; | ||
|  |   } return O; | ||
|  | }; |