arrayDepth.js 649 B

123456789101112131415161718192021222324252627282930
  1. 'use strict';
  2. module.exports = arrayDepth;
  3. function arrayDepth(arr) {
  4. if (!Array.isArray(arr)) {
  5. return { min: 0, max: 0, containsNonArrayItem: true };
  6. }
  7. if (arr.length === 0) {
  8. return { min: 1, max: 1, containsNonArrayItem: false };
  9. }
  10. const res = arrayDepth(arr[0]);
  11. for (let i = 1; i < arr.length; ++i) {
  12. const _res = arrayDepth(arr[i]);
  13. if (_res.min < res.min) {
  14. res.min = _res.min;
  15. }
  16. if (_res.max > res.max) {
  17. res.max = _res.max;
  18. }
  19. res.containsNonArrayItem = res.containsNonArrayItem || _res.containsNonArrayItem;
  20. }
  21. res.min = res.min + 1;
  22. res.max = res.max + 1;
  23. return res;
  24. }