我从一个字符串数组开始,其中数组的每个元素由"//"分隔。例如: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"
。
然而,代码不起作用。有人能帮帮我吗?谢谢。(我将其分配给window的原因是因为我需要稍后在另一个文件中访问此变量)
假设您的temp
数组是正确的,您必须在循环之前初始化数组:
window.data_arrays = [];
for (var i = 0; i < temp.length; i++) {
window.data_arrays[i] = temp[i].split("//");
}
否则,您将在每次迭代中覆盖它,并且它将只包含上次迭代的值。
你差一点。
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("//");
}
在示例代码第3行(如下)中,"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]);
数组定义不正确,其余部分接近:
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);