1

次のような配列があります。

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(?);
4

2 に答える 2

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);
于 2013-04-24T08:52:05.597 に答える
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を渡すためにの 3 番目のパラメータが使用されていることに注意してください。arrayruncode(array)

于 2013-04-25T15:07:26.333 に答える