我想在每个第一个元素中创建一个带有索引号的二维数组。
编辑:
到目前为止很多...@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));
});
答案 0 :(得分: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
答案 1 :(得分: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, ""];