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.
		
		
		
		
		
			
		
			
				
					
					
						
							46 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							46 lines
						
					
					
						
							1.1 KiB
						
					
					
				var baseKeys = require('./_baseKeys'), | 
						|
    getTag = require('./_getTag'), | 
						|
    isArrayLike = require('./isArrayLike'), | 
						|
    isString = require('./isString'), | 
						|
    stringSize = require('./_stringSize'); | 
						|
 | 
						|
/** `Object#toString` result references. */ | 
						|
var mapTag = '[object Map]', | 
						|
    setTag = '[object Set]'; | 
						|
 | 
						|
/** | 
						|
 * Gets the size of `collection` by returning its length for array-like | 
						|
 * values or the number of own enumerable string keyed properties for objects. | 
						|
 * | 
						|
 * @static | 
						|
 * @memberOf _ | 
						|
 * @since 0.1.0 | 
						|
 * @category Collection | 
						|
 * @param {Array|Object|string} collection The collection to inspect. | 
						|
 * @returns {number} Returns the collection size. | 
						|
 * @example | 
						|
 * | 
						|
 * _.size([1, 2, 3]); | 
						|
 * // => 3 | 
						|
 * | 
						|
 * _.size({ 'a': 1, 'b': 2 }); | 
						|
 * // => 2 | 
						|
 * | 
						|
 * _.size('pebbles'); | 
						|
 * // => 7 | 
						|
 */ | 
						|
function size(collection) { | 
						|
  if (collection == null) { | 
						|
    return 0; | 
						|
  } | 
						|
  if (isArrayLike(collection)) { | 
						|
    return isString(collection) ? stringSize(collection) : collection.length; | 
						|
  } | 
						|
  var tag = getTag(collection); | 
						|
  if (tag == mapTag || tag == setTag) { | 
						|
    return collection.size; | 
						|
  } | 
						|
  return baseKeys(collection).length; | 
						|
} | 
						|
 | 
						|
module.exports = size;
 | 
						|
 |