在javascript中填充多维数组

时间:2011-07-13 15:16:45

标签: javascript arrays multidimensional-array

我从一个字符串数组开始,其中数组的每个元素用“//”分隔。例如temp[0] = {"sky//hi//pi"}temp[1] = {"fish//steak//carrot"}。现在我的代码看起来像这样:

for (var i = 0; i < temp.length ;i++)
{
window.data_arrays = Array(2);
window.data_arrays[i] = temp[i].split("//");
}

我要做的是将data_arrays变为二维数组......所以对于示例来说,它就像temp[0][0] = "sky"temp[0][1] = "hi"temp[1][0] = "fish"

但是代码不起作用。有人可以帮帮我吗? 谢谢。 (我将它分配给窗口的原因是因为我需要稍后在另一个文件中访问此变量)

4 个答案:

答案 0 :(得分:2)

假设您的temp数组是正确的,您必须在循环之前初始化数组

window.data_arrays = [];
for (var i = 0; i < temp.length; i++) {
     window.data_arrays[i] = temp[i].split("//");
}

否则你会在每次迭代时覆盖它,它只包含最后一次迭代的值。

DEMO

答案 1 :(得分:1)

你很亲密。

temp = []; 
temp[0] = "sky//hi//pi"; 
temp[1] = "fish//steak//carrot";

window.data_arrays = [];
for (var i = 0; i < temp.length ;i++) {
  window.data_arrays[i] = temp[i].split("//");
}

答案 2 :(得分:1)

在示例代码行3(下面)中,每次迭代都会覆盖“window.data_arrays”。

window.data_arrays = Array(2);

将赋值语句移动到循环外部。 以下代码对我有用。 (我在firefox中使用了FireBug插件)

var temp = ["sky//hi//pi","fish//steak//carrot" ];

var data_array = {};
for (var i = 0; i < temp.length ;i++)
{
   data_array[i] = temp[i].split("//");
}

console.log(data_array.length);
console.log(data_array[0][0]);
console.log(data_array[0][1]);
console.log(data_array[0][2]);
console.log(data_array[1][0]);

答案 3 :(得分:1)

数组定义格式错误,其余部分接近:

var temp = [];
temp.push("sky//hi//pi");           // temp[0]
temp.push("fish//steak//carrot");   // temp[1]

var final = [];
for( var i=0, tempLen=temp.length; i < tempLen; i++ ){
   final.push( temp[i].split("//"));
}
console.log(final);