Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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_Object_Multidimensional Array - Fatal编程技术网

Javascript 多维数组对象分配

Javascript 多维数组对象分配,javascript,object,multidimensional-array,Javascript,Object,Multidimensional Array,到目前为止,我正在尝试创建一个二维JSON数组,以在一系列“框架”中保存一系列形状。到目前为止,我还以为我拥有它,但我只能将形状推到帧[0];当我通过它时,frame[1]我得到错误uncaughttypeerror:无法读取未定义的属性“shape” 为什么我的浏览器不能将帧[1]识别为帧阵列的下一个潜在存储区域?这与我初始化JSON数组的方式有关吗 有关守则: function Obj(type, x, y, w, h, r) { "use strict"; this.type = type

到目前为止,我正在尝试创建一个二维JSON数组,以在一系列“框架”中保存一系列形状。到目前为止,我还以为我拥有它,但我只能将形状推到
帧[0]
;当我通过它时,
frame[1]
我得到错误
uncaughttypeerror:无法读取未定义的属性“shape”

为什么我的浏览器不能将
帧[1]
识别为
阵列的下一个潜在存储区域?这与我初始化JSON数组的方式有关吗

有关守则:

function Obj(type, x, y, w, h, r) {
"use strict";
this.type = type || null; //rect, crcl, line, text
this.x = x || null;
this.y = y || null;
this.w = w || null; //used for rect, line
this.h = h || null; //used for rect, line
this.r = r || null; //used only for crcl
}
var keyframes = {
    'frame': [{
        'shape': []
    }]
};

var shape1 = new Obj('rect', 20, 20, 20, 20, 0);
var shape2 = new Obj('crcl', 20, 20, 0, 0, 20);

keyframes.frame[0].shape.push(shape1);
keyframes.frame[1].shape.push(shape2);

它确实将
frame[1]
识别为放置某物的潜在位置,但您没有将任何东西放在那里。您的代码期望
frame[1]
是对对象的引用,但您仅以这种方式初始化第一个元素

keyframes.frame[1] = { shape: [] };

将初始化下一个元素。如果没有初始化,
keyframe.frame[1]
未定义的

它确实会将
frame[1]
识别为放置某些内容的潜在位置,但您没有将任何内容放在那里。您的代码期望
frame[1]
是对对象的引用,但您仅以这种方式初始化第一个元素

keyframes.frame[1] = { shape: [] };
将初始化下一个元素。如果没有该初始化,
关键帧。帧[1]
未定义的

问题:

关键帧的初始化如下所示:

  • 物件
  • 包含一个1元素数组“frame”
  • “frame”包含一个对象
无法访问关键帧。帧[1],因为它不存在(帧是一个1元素数组,因此只有关键帧。帧[0]有效)

解决方案:

  • 创建关键帧。帧[1]元素

    • keyframe.push({shape:[]})//现在关键帧。帧[1]已存在
  • 按之前的尝试将形状2推送到上面添加的对象

    • keyframes.frame[1].shape.push(shape2)//这现在应该是有效的
问题:

关键帧的初始化如下所示:

  • 物件
  • 包含一个1元素数组“frame”
  • “frame”包含一个对象
无法访问关键帧。帧[1],因为它不存在(帧是一个1元素数组,因此只有关键帧。帧[0]有效)

解决方案:

  • 创建关键帧。帧[1]元素

    • keyframe.push({shape:[]})//现在关键帧。帧[1]已存在
  • 按之前的尝试将形状2推送到上面添加的对象

    • keyframes.frame[1].shape.push(shape2)//这现在应该是有效的

太好了,现在我只需要记住每次创建下一帧时初始化下一帧。谢谢很好,现在我只需要记住每次创建下一帧时初始化下一帧。谢谢