Javascript将值放在二维数组中

时间:2011-08-05 19:25:19

标签: javascript multidimensional-array

有没有更好的方法在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

2 个答案:

答案 0 :(得分:3)

在JS中创建数组的推荐方法是不使用'new'方法。相反,做:

var divcookies = [];
divcookies[0] = [];
divcookies[0][0] = name;
divcookies[0][1] = value;

此符号使您无需事先指定元素编号。将变量初始化为数组后,您可以设置所需的任何索引。缺点(不管你使用哪种表示法)是你必须初始化每个子数组。

答案 1 :(得分:1)

您的二维数组已正确设置(嗯,[]是首选,而不是new Array())。实际问题仅在于使用alert(divcookies)显示数组。在这里,使用预定义的方法divcookiestoString()转换为字符串。此方法创建一个逗号分隔的数组元素列表,从第一个元素到最后一个元素。如果未设置其中的某些元素,则输出空字符串。在您的情况下,您没有为i分配divcookies name_value[0].search("compage") == -1的索引,,。这些是提醒列表中的差距{{1}}。