簡體   English   中英

如何在JavaScript中創建多維數組?

[英]How to create a multidimensional array in JavaScript?

如何在JavaScript中創建多維數組? 我有:

var m = 4;
for (var i = 0; i < m; i++){
    groupsData.name_of_bar = [];
    groupsData.name_of_bar[i]['a'] = data[i].a;
    groupsData.name_of_bar[i]['ab'] = data[i].ab;
    groupsData.name_of_bar[i]['de'] = data[i].de;
    groupsData.name_of_bar[i]['gh'] = data[i].gh;
    groupsData.name_of_bar[i]['xy'] = data[i].xy;
}

如果我做:

groupsData.name_of_bar[0]

我收到錯誤消息:

TypeError:無法讀取未定義的屬性“ 0”

TypeError:無法設置未定義的屬性“ a”

我究竟做錯了什么?

JavaScript本身不支持多維數組。 最接近的是創建一個數組,其中的值也是數組。

// Set this **outside** the loop so you don't overwrite it each time you go around the loop
groupsData.name_of_bar = [];

for (var i = 0; i < m; i++){
    // Create a new "array" each time you go around the loop
    // Use objects, not arrays, when you have named properties (instead of ordered numeric ones)
    groupsData.name_of_bar[i] = {};

    groupsData.name_of_bar[i]['a'] = data[i].a;
    groupsData.name_of_bar[i]['ab'] = data[i].ab;
    groupsData.name_of_bar[i]['de'] = data[i].de;
    groupsData.name_of_bar[i]['gh'] = data[i].gh;
    groupsData.name_of_bar[i]['xy'] = data[i].xy;
}

您聲明對象的方式有些偏離。 似乎您正在嘗試創建對象數組。

var groupsData = {name_of_bar: []}, 
    m = 4, 
    i = 0;
for(; i < m; i++) {
    groupsData.name_of_bar.push({
        a: data[i].a, 
        ab: data[i].ab, 
        de: data[i].de, 
        gh: data[i].gh, 
        xy = data[i].xy
    });
}

循環中的每次迭代,您都在進行groupsData.name_of_bar = []; 將刪除那里已經存在的任何東西,並用空白數組替換它。

另外,當您執行groupsData.name_of_bar[i]['a'] ,需要首先創建groupsData.name_of_bar[i]

一種方法是:

groupsData.name_of_bar = [];

var m = 4;
for (var i = 0; i < m; i++){
    groupsData.name_of_bar.push({
        a: data[i].a,
        ab: data[i].ab,
        ab: data[i].ab,
        de: data[i].de,
        gh: data[i].gh,
        xy: data[i].xy,
    });
}

請注意,在JavaScript中, 只能對數組進行數字索引。 如果要使用字符串索引,則需要使用一個對象。

另外,如果data[i]中沒有其他值,則可以通過執行以下操作進一步簡化此操作:

groupsData.name_of_bar = [];

var m = 4;
for (var i = 0; i < m; i++){
    groupsData.name_of_bar.push(data[i]);
}

哎呀,為什么不只使用groupsData.name_of_bar = data; 並完全失去循環?

暫無
暫無

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

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