我想在每个第一个元素中创建一个带有索引号的二维数组。
(我之前的问题让我到了这一点>)
这有效:
$('#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));
});
修改 我的最终工作版本(到目前为止):
var myArray = [];
var rows = 5;
var cols = 2;
for (var i = 0; i < rows; i++) {
myArray [i] = [];
for (var j = 0; j < cols; j++) {
if (j==0) myArray [i][j] = i;
else myArray [i][j] = '';
}
}
alert(JSON.stringify(myArray));
(r)主要是由jfriend;)
仍然不知道为什么不能在开头声明2D数组:myArray = [[]]
答案 0 :(得分:1)
按照您当前的模式,它将如下工作:
$('#create_indexed_array').click(function() {
var myArray = [[]];
for (var i = 0; i < 2; i++) {
myArray[0][i] = ""; // create cols
}
for (i = 1; i < 5; i++) {
// create copy of first row in each other row
myArray[i] = myArray[0].slice(0);
}
for (i = 0; i < 5; i++) {
myArray[i][0] = i; // set index
}
alert(JSON.stringify(myArray));
});
工作演示:http://jsfiddle.net/jfriend00/vJDPp/
你要记住的一件事是,分配一个数组会分配对该数组的引用,而不是一个副本,所以如果你想让数组的每个元素都不同,你必须在物理上复制第一行来放置在后续的行中。我还建议更改new_array
的名称,因为这听起来很像一个函数名称,它会让代码混淆,无法向不知道的人读取。
如果您只是尝试将2D数组初始化为所有9个数组,就像在第一个代码示例中那样,那么这将更加简单:
$('#create_indexed_array').click(function() {
var myArray = [];
for (var i = 0; i < 5; i++) {
myArray[i] = [];
for (var j = 0; j < 2; j++) {
myArray[i][j] = 9;
}
}
alert(JSON.stringify(myArray));
});
或功能版本:
function create2DArray(lenX, lenY, initVal) {
var myArray = [];
for (var i = 0; i < lenX; i++) {
myArray[i] = [];
for (var j = 0; j < lenY; j++) {
myArray[i][j] = initVal;
}
}
return(myArray);
}
答案 1 :(得分:0)
为什么不将它与嵌入式for循环一起使用?
For(var i = 0; i < 2; i++) {
For(var j = 0; j < 5; j++) {
new_array[i][j] = i; //set index
}
}
这样它就可以同时设置索引。你必须先申报。
之前的问题是你将它视为两个独立的数组,一个项目数组和一个项目数组的数组。 2D数组是1维2维数组。