javascript Javascript将值放入二维数组
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6961590/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Javascript putting values in two-dimensional array
提问by user823527
Is there a better way to create a two-dimensional array in javascript than this?
有没有比这更好的方法在javascript中创建二维数组?
var divcookies = new Array();
divcookies[0] = new Array(2);
divcookies[0][0] = name;
divcookies[0][1] = value;
This results in a two dimensional array with bad data added in the middle of it. I expect an array like this.
这会导致一个二维数组,其中添加了错误的数据。我期待这样的数组。
(name1, value1, name2, value2, name3, value3)
Instead I get this.
相反,我得到了这个。
(name1, value2, ,name2, value2, name3, value3)
I don't really know when that extra bad data is added because if I alert during the loop that fills the array it only seems to loop through 3 times to put the three pairs of values expected.
我真的不知道什么时候添加了额外的坏数据,因为如果我在填充数组的循环期间发出警报,它似乎只会循环 3 次以放置预期的三对值。
So I am looking for a different way to get the two dimensional array.
所以我正在寻找一种不同的方式来获取二维数组。
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
jsBin http://jsbin.com/iwuqab
采纳答案by Jiri Kriz
Your 2-dimensional array is set up correctly (well, []
is preferred instead of new Array()
). The actual problem is only with the display of your array using alert(divcookies)
. Here, divcookies
is converted to a string using the predefined method toString()
. This method creates a list of comma-separated array elements, from the first element to the last element. If some elements in between are not set, an empty string is output. In your case, you are not assigning to those indexes i
of divcookies
for which name_value[0].search("compage") == -1
. These are the gaps ,,
in the alerted list.
您的二维数组设置正确(嗯,[]
是首选而不是new Array()
)。实际问题仅在于使用alert(divcookies)
. 在这里,divcookies
使用预定义的方法转换为字符串toString()
。此方法创建一个逗号分隔的数组元素列表,从第一个元素到最后一个元素。如果中间的某些元素未设置,则输出空字符串。在你的情况,你是不是分配给这些指标i
的divcookies
针对name_value[0].search("compage") == -1
。这些是,,
警报列表中的空白。
回答by Marc B
The recommended method for creating arrays in JS is to NOT use the 'new' method. Instead, do:
在 JS 中创建数组的推荐方法是不要使用 'new' 方法。相反,请执行以下操作:
var divcookies = [];
divcookies[0] = [];
divcookies[0][0] = name;
divcookies[0][1] = value;
This notation frees you up from having to specify element numbers in advance. Once a variable's been initialized as an array, you can set any index you want. The downside (regardless of which notation you use) is that you have to initialize every sub-array as well.
这种表示法使您不必预先指定元素编号。一旦一个变量被初始化为一个数组,你就可以设置你想要的任何索引。缺点(无论您使用哪种符号)是您还必须初始化每个子数组。