[英]Issue with multi-dimensional arrays in JavaScript
我正在嘗試在 javascript 中創建一個多維數組。
以下代碼生成以下錯誤:0x800a138f - JavaScript 運行時錯誤:無法設置未定義或空引用的屬性“0”
var data = [["Timestamp", "kWh Produced", "kWh Used"]]; data[1][0] = "test";
我假設我需要以某種方式“預分配”數組,以便它知道它是多維的。
如果這樣更簡單,我將在 for 循環中一次一行地填充這個數組。
我該怎么做呢?
此代碼將解決您的問題data[1] = []
它在此位置創建一個新數組。
var data = [["Timestamp", "kWh Produced", "kWh Used"]]; data[1] = []; data[1].push("test") console.log(JSON.stringify(data)); // [["Timestamp","kWh Produced","kWh Used"],["test"]]
正如您的日志所示, data[1]
是undefined
。
有多種方法可以將data[0–99]
的值定義為空數組。 例如,在 es6 中, Array(100).fill([])
。 請參閱https://stackoverflow.com/a/41246860/1664393 。
問題是“data”是一個具有單個元素的數組(三個字符串的數組),所以data[1]
是未定義的。
var data = [["Timestamp", "kWh Produced", "kWh Used"]];
// data[1] // => undefined
您只需要向數據數組追加(或分配)新值即可使用它們。
data.push([]); // or data[1] = []
data[1]; // => []
data[1][0] = "test";
data[1]; // => ["test"]
data[1].push("foo");
data[1]; // => ["test", "foo"]
1
獲取值,但是該索引等於當前數組length = 1
。 0 <--- Position
|
v
[ ["Timestamp", "kWh Produced", "kWh Used"] ]
^
|
+---- Length = 1
因此, data[1]
無效,因為超出了數組的邊界。
您需要獲取第一個位置: data[0][0]
並將其替換為新值。
var data = [["Timestamp", "kWh Produced", "kWh Used"]]; data[0][0] = "test"; console.log(data);
如果要添加新值,則需要獲取第一個位置: data[0]
並推送新值。
var data = [["Timestamp", "kWh Produced", "kWh Used"]]; data[0].push("test"); console.log(data);
謝謝大家。
正如安德魯·布恩 (Andrew Boone) 所建議的那樣,在data[1][0] = "test"
之前添加data[1] = []
就成功了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.