...эффективность такого сжатия будет сильно зависеть от взаимного соотношения этих двух бесконечностей...
то вам придётся запрограммировать все возможные алгоритмы.
любые алгоритмы сжатия без потерь с одинаковой вероятностью могут либо уменьшить объем данных, случайно найдя закономерность, либо увеличить, если таковой не нашлось.
function getMaxDepth(arr, level ){
if ( !level ){
level = 0;
}
if ( Array.isArray(arr) ) {
level = level + 1;
var p = level;
for(var i=0; i<arr.length; i++){
var c = arr[i];
var sublevel = getMaxDepth(c, level)
p = Math.max( p, sublevel);
}
return p;
} else {
return level;
}
}