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.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.7 KiB
						
					
					
				var baseTimes = require('./_baseTimes'), | 
						|
    isArguments = require('./isArguments'), | 
						|
    isArray = require('./isArray'), | 
						|
    isBuffer = require('./isBuffer'), | 
						|
    isIndex = require('./_isIndex'), | 
						|
    isTypedArray = require('./isTypedArray'); | 
						|
 | 
						|
/** Used for built-in method references. */ | 
						|
var objectProto = Object.prototype; | 
						|
 | 
						|
/** Used to check objects for own properties. */ | 
						|
var hasOwnProperty = objectProto.hasOwnProperty; | 
						|
 | 
						|
/** | 
						|
 * Creates an array of the enumerable property names of the array-like `value`. | 
						|
 * | 
						|
 * @private | 
						|
 * @param {*} value The value to query. | 
						|
 * @param {boolean} inherited Specify returning inherited property names. | 
						|
 * @returns {Array} Returns the array of property names. | 
						|
 */ | 
						|
function arrayLikeKeys(value, inherited) { | 
						|
  var isArr = isArray(value), | 
						|
      isArg = !isArr && isArguments(value), | 
						|
      isBuff = !isArr && !isArg && isBuffer(value), | 
						|
      isType = !isArr && !isArg && !isBuff && isTypedArray(value), | 
						|
      skipIndexes = isArr || isArg || isBuff || isType, | 
						|
      result = skipIndexes ? baseTimes(value.length, String) : [], | 
						|
      length = result.length; | 
						|
 | 
						|
  for (var key in value) { | 
						|
    if ((inherited || hasOwnProperty.call(value, key)) && | 
						|
        !(skipIndexes && ( | 
						|
           // Safari 9 has enumerable `arguments.length` in strict mode. | 
						|
           key == 'length' || | 
						|
           // Node.js 0.10 has enumerable non-index properties on buffers. | 
						|
           (isBuff && (key == 'offset' || key == 'parent')) || | 
						|
           // PhantomJS 2 has enumerable non-index properties on typed arrays. | 
						|
           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || | 
						|
           // Skip index properties. | 
						|
           isIndex(key, length) | 
						|
        ))) { | 
						|
      result.push(key); | 
						|
    } | 
						|
  } | 
						|
  return result; | 
						|
} | 
						|
 | 
						|
module.exports = arrayLikeKeys;
 | 
						|
 |