Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的多维数组问题_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

JavaScript中的多维数组问题

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] // =>

我试图用javascript创建一个多维数组

以下代码生成以下错误:0x800a138f-JavaScript运行时错误:无法设置未定义或空引用的属性“0”

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