-1

各最初の要素にインデックス番号を持つ 2 次元配列を作成したいと考えています。

編集:

thx これまでのところたくさん..

@carl:私が行った試行の種類を示すためだけに、多くの関数作成を行いました..

ジョンホプキンスのアイデアはこれを生み出しました:

これは機能します:

$('#create_indexed_array').click(function() {

    var new_array = [[9,9],[9,9],[9,9],[9,9],[9,9]];

    for (var i = 0; i < 5; i++) {

        new_array[i][0] = i;

    }

    alert(JSON.stringify(new_array));

});

しかし、これは機能しません:

$('#create_indexed_array').click(function() {


    var new_array = new Array(new Array());

    for (var i = 0; i < 2; i++) {
        new_array[0][i] = ""; // create cols
    } 

    for (var i = 1; i < 5; i++) {
        new_array[i] = new_array[0]; // create rows
    }

    for (var i = 0; i < 5; i++) {
        new_array[i][0] = i; // set index

    }

    alert(JSON.stringify(new_array));

});
4

2 に答える 2

0

これをやってみてください

for (var i = 0; i < $('#rows').val(); i++) {
    new_array[i][0] = i;
}

forループにはクロージャがないため、'i'の定義はmain関数の最初で行うことができます。したがって、ループが終了しても、「i」変数は引き続き使用可能です。この本を読むことができますhttp://shop.oreilly.com/product/9780596517748.do

于 2012-12-12T14:51:54.080 に答える
0

JavaScript には 2 次元配列はありません。他の配列オブジェクトを含む可能性がある配列オブジェクトだけがあります (ただし、それ以外のものも含まれます)。new Array(new Array());あなたが期待するものではありません。[]ところで、コンストラクターを明示的に呼び出す代わりに、empty-array-literal を使用することもできます。

var new_array = [];
for (var i=0; i<5; i++) {
    // create and add a new subarray explicitly:
    new_array[i] = [];
    // add a value to that subarray:
    new_array[i][0] = i;
    // add other values to the subarray:
    new_array[i][1] = "";
}
// new_array now looks like this:
[[0, ""], [1, ""], [2, ""], [3, ""], [4, ""]]

// You might shorten the whole code by using stuffed literals for the sub arrays:
for (var new_array=[], i=0; i<5; i++)
    new_array[i] = [i, ""];
于 2012-12-12T16:19:38.477 に答える