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
						
					
					
				| '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;
 | |
| } |