关闭在for循环>不同的尝试失败(closure in for-loop > differen

2019-08-03 23:26发布

我想创建与每个第一元件的索引数的2维阵列。

编辑:

THX很多至今..

@carl:我做了这么多的创建函数只是为了显示的那种尝试我做的..

jonhopkins想法就产生了这一点:

这个工程:

$('#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));

});

Answer 1:

尝试这样做

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

的定义“我”可以在主函数的开始做,因为for循环还没有关闭。 所以,当循环结束的“我”变种仍然可用。 你可以阅读这本书http://shop.oreilly.com/product/9780596517748.do



Answer 2:

有在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, ""];


文章来源: closure in for-loop > different tries failed