簡體   English   中英

Javascript將值放在二維數組中

[英]Javascript putting values in two-dimensional 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

在JS中創建數組的推薦方法是不使用'new'方法。 相反,做:

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

這種表示法使您不必提前指定元素編號。 將變量初始化為數組后,您可以設置所需的任何索引。 缺點是(無論使用哪種表示法),您必須初始化每個子數組。

您的二維數組已正確設置(好, []是首選而不是new Array() )。 實際問題僅在於使用alert(divcookies)顯示數組。 這里, divcookies使用預定義的方法toString()轉換為字符串。 此方法創建一個逗號分隔的數組元素列表,從第一個元素到最后一個元素。 如果未設置其中的某些元素,則輸出空字符串。 在你的情況,你是不是分配給這些索引idivcookies針對name_value[0].search("compage") == -1 這些都是空白,,在提醒列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM