是否有更好的方法来创建一个二维数组在javascript比这?
var divcookies = new Array();
divcookies[0] = new Array(2);
divcookies[0][0] = name;
divcookies[0][1] = value;
这会产生一个二维数组,中间添加了坏数据。我期望一个这样的数组
(name1, value1, name2, value2, name3, value3)
我得到了这个
(name1, value2, ,name2, value2, name3, value3)
我真的不知道什么时候添加了额外的坏数据,因为如果我在循环填充数组时发出警告,它似乎只循环3次来放置预期的三对值。
所以我正在寻找一种不同的方法来获得二维数组。
function get_cookies_array() {
var divcookies = new Array();
if (document.cookie && document.cookie != '') {
var split = document.cookie.split(';');
for (var i = 0; i < split.length; i++) {
var name_value = split[i].split("=");
name_value[0] = name_value[0].replace(/^ /, '');
if ( name_value[0].search("compage") != -1 ) {
alert (divname+" "+ divarray);
divcookies[i] = new Array(2);
divcookies[i][0] = decodeURIComponent(name_value[0]);
divcookies[i][1] = decodeURIComponent(name_value[1]);
}
}
}
alert (divcookies);
return divcookies;
}
jsBin http://jsbin.com/iwuqab
在JS中创建数组的推荐方法是不使用'new'方法。相反,做的事:
var divcookies = [];
divcookies[0] = [];
divcookies[0][0] = name;
divcookies[0][1] = value;
这种表示法使您不必事先指定元素编号。一旦变量被初始化为数组,你就可以设置任何你想要的索引。缺点(无论使用哪种表示法)是必须初始化每个子数组。
您的二维数组设置正确(好吧,首选[]
而不是new Array()
)。实际问题仅与使用alert(divcookies)
的阵列显示有关。这里,使用预定义的方法toString()
将divcookies
转换为字符串。此方法创建一个逗号分隔的数组元素列表,从第一个元素到最后一个元素。如果没有设置中间的某些元素,则输出一个空字符串。在您的情况下,您没有将name_value[0].search("compage") == -1
分配给divcookies
的i
索引。这些是警报列表中,,
的空白