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
766 B
33 lines
766 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; |
|
}
|
|
|