-1

我想在每个第一个元素中创建一个带有索引号的二维数组。

编辑:

到目前为止很多..

@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

JavaScript 中没有二维数组,只有数组对象可以包含其他数组对象(但也可以包含其他任何东西)。new Array(new Array());不符合您的期望。顺便说一句,您可以使用空数组文字[]而不是显式调用构造函数。

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 回答
0

尝试这样做

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

'i' 的定义可以在 main 函数的开头完成,因为 for 循环没有关闭。因此,当循环结束时,'i' var 仍然可用。你可以读这本书http://shop.oreilly.com/product/9780596517748.do

于 2012-12-12T14:51:54.080 回答