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.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							1.1 KiB
						
					
					
				'use strict'; | 
						|
var isArray = require('../internals/is-array'); | 
						|
var toLength = require('../internals/to-length'); | 
						|
var bind = require('../internals/function-bind-context'); | 
						|
 | 
						|
// `FlattenIntoArray` abstract operation | 
						|
// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray | 
						|
var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { | 
						|
  var targetIndex = start; | 
						|
  var sourceIndex = 0; | 
						|
  var mapFn = mapper ? bind(mapper, thisArg, 3) : false; | 
						|
  var element; | 
						|
 | 
						|
  while (sourceIndex < sourceLen) { | 
						|
    if (sourceIndex in source) { | 
						|
      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; | 
						|
 | 
						|
      if (depth > 0 && isArray(element)) { | 
						|
        targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; | 
						|
      } else { | 
						|
        if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length'); | 
						|
        target[targetIndex] = element; | 
						|
      } | 
						|
 | 
						|
      targetIndex++; | 
						|
    } | 
						|
    sourceIndex++; | 
						|
  } | 
						|
  return targetIndex; | 
						|
}; | 
						|
 | 
						|
module.exports = flattenIntoArray;
 | 
						|
 |