2015-02-20 2 views
0

Я хочу, чтобы иметь возможность перебирать одну и ту же коллекцию на заданную глубину. Например:Изменение уровня глубины вложенности для каждого цикла во время выполнения

function (depth){ 
    var arr = [1,2,3]; 

    //depth = 1 

    arr.forEach(function(val) { 
     func(val); 
    }); 


    // depth = 2 

    arr.forEach(function (val) { 
      arr.forEach(function (val2) { 
       func(val, val2); 
      }); 
    }); 

    //and so on 

} 

есть способ сделать это в JS?

+0

Это называется рекурсия; вы должны определить 'func', чтобы он вызывал себя, когда он встречает другой уровень в массиве, и взгляните на этот комментарий для предложений. – ssube

ответ

0

Вы пишете функцию, которая отслеживает ваше местоположение и удаляет ее до тех пор, пока вы не достигнете нуля.

function goDeep (depth, array, func) { 
    if (depth && array && array.length) { 
    array.forEach(function (element) { 
     goDeep(depth-1, element, func) 
    }); 
    } else { 
    func(array) 
    } 
} 
Смежные вопросы