JavaScript中的多维数组问题
我试图用javascript创建一个多维数组 以下代码生成以下错误:0x800a138f-JavaScript运行时错误:无法设置未定义或空引用的属性“0”JavaScript中的多维数组问题,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我试图用javascript创建一个多维数组 以下代码生成以下错误:0x800a138f-JavaScript运行时错误:无法设置未定义或空引用的属性“0” var数据=[[“时间戳”、“生产的千瓦时数”、“使用的千瓦时数”]; 数据[1][0]=“测试”问题在于,“数据”是一个具有单个元素的数组(三个字符串的数组),因此data[1]是未定义的 var data = [["Timestamp", "kWh Produced", "kWh Used"]]; // data[1] // =>
var数据=[[“时间戳”、“生产的千瓦时数”、“使用的千瓦时数”];
数据[1][0]=“测试”代码>问题在于,“数据”是一个具有单个元素的数组(三个字符串的数组),因此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]=[]
它将在此位置创建一个新数组
var数据=[[“时间戳”、“生产的千瓦时数”、“使用的千瓦时数”];
数据[1]=[];
数据[1]。推送(“测试”)
console.log(JSON.stringify(data));//[[“时间戳”、“生产的千瓦时数”、“使用的千瓦时数”]、[“测试”]
如日志所示,数据[1]
未定义
有许多方法可以将数据[0–99]
的值定义为空数组。例如,在es6中,数组(100).fill([])
。参见。
- 在JS和其他编程语言中,数组的索引是基于零的
- 您试图从索引
1
中获取一个值,但是该索引等于当前数组length=1
谢谢大家
按照Andrew Boone的建议,在数据[1][0]=“test”
之前添加数据[1]=[]
,成功了。您只能访问数据[0]
,它等于[“时间戳”、“生产的千瓦时数”、“使用的千瓦时数”
。要将项目添加到数据中
请使用data.push()
data[1]
在您的示例中不存在,只有data[0]
data[1]
未定义,请尝试使用data[0][0]
多维数组在JS中不是真正的东西(JS数组实际上根本不是数组)。虽然可以在数组中包含数组,但所有的“子数组”彼此完全独立,因此是的,您必须单独创建每个子数组。在数据[1]=[]
之前添加数据[1][0]=“test”
也应该对其进行排序。
0 <--- Position
|
v
[ ["Timestamp", "kWh Produced", "kWh Used"] ]
^
|
+---- Length = 1