[英]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.