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