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.
		
		
		
		
		
			
		
			
				
					33 lines
				
				765 B
			
		
		
			
		
	
	
					33 lines
				
				765 B
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | module.exports = arrayDepth; | ||
|  | 
 | ||
|  | function arrayDepth(arr) { | ||
|  |   if (!Array.isArray(arr)) { | ||
|  |     return { min: 0, max: 0, containsNonArrayItem: true }; | ||
|  |   } | ||
|  |   if (arr.length === 0) { | ||
|  |     return { min: 1, max: 1, containsNonArrayItem: false }; | ||
|  |   } | ||
|  |   if (arr.length === 1 && !Array.isArray(arr[0])) { | ||
|  |     return { min: 1, max: 1, containsNonArrayItem: false }; | ||
|  |   } | ||
|  | 
 | ||
|  |   const res = arrayDepth(arr[0]); | ||
|  | 
 | ||
|  |   for (let i = 1; i < arr.length; ++i) { | ||
|  |     const _res = arrayDepth(arr[i]); | ||
|  |     if (_res.min < res.min) { | ||
|  |       res.min = _res.min; | ||
|  |     } | ||
|  |     if (_res.max > res.max) { | ||
|  |       res.max = _res.max; | ||
|  |     } | ||
|  |     res.containsNonArrayItem = res.containsNonArrayItem || _res.containsNonArrayItem; | ||
|  |   } | ||
|  | 
 | ||
|  |   res.min = res.min + 1; | ||
|  |   res.max = res.max + 1; | ||
|  | 
 | ||
|  |   return res; | ||
|  | } |