簡體   English   中英

JavaScript 中的多維數組問題

[英]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"]
  • 在 JS 和其他編程語言中,數組的索引是從零開始的。
  • 您試圖從索引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.

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