2013-04-24 3 views
1

У меня есть массив, такие как это:пропусканием многомерного массива в функцию в JavaScript

var array = [['h','e','l','l','o'],['1','2','3','4','5'],['a','b','c','d','e']] 

и у меня возникли проблемы с передачей его функции здесь является оригинальный сценарий, я использую:

for (var x = 0; x <= 2; x++) { 
    var timesrun = 0; 

    function runcode() { 
     timesrun += 1; 
     for (var n = 0; n <= 4; n++) { 
      console.log(array[x][n]); 
     } //end for loop 1 
     if (timesrun == 2) { 
      clearInterval(interval); 
     } 
    } //end of function 
} // end for loop 2 
var interval = setInterval(function() { 
    runcode(array[x]); 
}, 1000); 

Когда я console.log внутри функции, я ничего не получаю, но если я беру внутренний цикл for вне функции, а затем console.log Я получаю ожидаемые значения. Поэтому я не думаю, что правильно вношу значения в функцию.

Для простоты я хотел бы задать этот вопрос, используя простой пример ниже:

function runcode(?){ 
    console.log(array[0][1]); //which should return h. 
} 
runcode(?); 
+0

возможно дубликат [Javascript замыкание внутри петли - простой практический пример] (http://stackoverflow.com/questions/750486/javascript -closure-inside-loops-simple-practice-example) – Bergi

ответ

1
var array = [['h','e','l','l','o'],['1','2','3','4','5'],['a','b','c','d','e']], 
    x = 0, 
    timesrun = 0; 

function runcode() { 
    timesrun += 1; 
    for (var n = 0; n <= 4; n++) { 
     console.log(array[x][n]); 
    } 
    if (timesrun == 2) { 
     clearInterval(interval); 
    } 
}  

var interval = setInterval(function() { 
    for (x = 0; x <= 2; x++) { 
     runcode(array[x]); 
    } 
}, 1000); 
+0

Он хочет использовать 'setInterval'! – Bergi

+0

Берги: ответ обновлен. – boring

+1

Спасибо! вы спасли много часов тоски. Я думаю, что я определенно могу продолжить здесь :) – Keleko

0

Для простоты я хотел бы задать этот вопрос, используя простой пример ниже:

function runcode(?){ 
    console.log(array[0][1]); //which should return h. 
} 

runcode(?); 

Чтобы получить доступ к переданной переменной, вы должны указать параметр Ослабляет в функциях заголовка

так, если бы вы заменить ? с array вы уже хорошо идти

function runcode(array){ 
       // ^^^^^ This is the name under which you can acces the passed variable 
    console.log(array[0][1]); //which should return h. 
       //^^^^^ This is where you use it 

} 
runcode(array); 
     //^^^^^ this is where you pass it //could be someOther2DimensionalArray 

и прикладывается к нерабочего кода

var array = [ 
    ['h', 'e', 'l', 'l', 'o'], 
    ['1', '2', '3', '4', '5'], 
    ['a', 'b', 'c', 'd', 'e'] 
], 
    x = 0, 
    timesrun = ~0; 

function runcode(array) { 
    x = timesrun += 1; 
    for (var n = 0; n <= 4; n++) { 
     console.log(array[x][n]); 
    } 
    if (timesrun == 2) { 
     clearInterval(interval); 
    } 
} 

var interval = setInterval(runcode, 1000, array); 

это следует сделать трюк.

Обратите внимание на третий параметр setInterval используется для передачи array // runcode(array)

Смежные вопросы