Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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/8/redis/2.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_Object - Fatal编程技术网

动态创建二维对象Javascript

动态创建二维对象Javascript,javascript,arrays,object,Javascript,Arrays,Object,我有点棘手的情况,我不能想出一个好的解决办法。 我有一个以下类型的数组: data = [ '1', '1', '964', '718', '0', '0', '0' ]; 详情如下: 数据[0]=幻灯片编号 数据[1]=形状编号 数据[2]=宽度 数据[3]=高度 数据[4]=左 数据[5]=顶部 数据[6]=href 解释 幻灯片可以有多个形状,每个形状都有5个属性(宽度、高度、左侧、顶部、href) 目标 我想创建一个大对象来保存所有数据。 大概是这样的: [{"Slide1" : [{

我有点棘手的情况,我不能想出一个好的解决办法。 我有一个以下类型的数组:

data = [ '1', '1', '964', '718', '0', '0', '0' ];
详情如下:

数据[0]=幻灯片编号

数据[1]=形状编号

数据[2]=宽度

数据[3]=高度

数据[4]=左

数据[5]=顶部

数据[6]=href

解释

幻灯片可以有多个形状,每个形状都有5个属性(宽度、高度、左侧、顶部、href)

目标

我想创建一个大对象来保存所有数据。 大概是这样的:

[{"Slide1" : [{
    "Shape1" : {
      "Width" : 200,
      "Height" : 100,
      "Left" : 200,
      "Top" : 100,
      "Link" : "1"
    }
  }, {
    "Shape2" : {
      "Width" : 200,
      "Height" : 100,
      "Left" : 200,
      "Top" : 100,
      "Link" : "0"
    }
  }]
}, {
  "Slide2" : [{
    "Shape1" : {
      "Width" : 200,
      "Height" : 100,
      "Left" : 200,
      "Top" : 100,
      "Link" : "0"
    }
  }, {
    "Shape2" : {
      "Width" : 200,
      "Height" : 100,
      "Left" : 200,
      "Top" : 100,
      "Link" : "1"
    }
  }, {
    "Shape3" : {
      "Width" : 200,
      "Height" : 100,
      "Left" : 200,
      "Top" : 100,
      "Link" : "2"
    }
  }]
}]
我写了下面的代码,这几乎让我达到了目标,但仍然没有接近目标:

for(var x = 0; x<data.length; x++){
    data[x] = data[x].slice(1, -1);
    data[x] = data[x].split("#");
}
var count = 0;
var total_slides = 66;
var slidesnr_and_shapesnr = {};
var data_object = {};
while(count < data.length)
{
    slidesnr_and_shapesnr[data[count][0]] = data[count][1];
    count++;
}
for(var i = 1; i<=total_slides; i++){
    for(var j = 1; j <= slidesnr_and_shapesnr[i]; j++){
        for(var k = 0; k<data.length; k++){
            if(data[k][0] == i && data[k][1] == j){
                data_object['slide'+i]['shapes'+j] = {
                    'width': data[k][2],
                    'height': data[k][3],
                    'left': data[k][4],
                    'top': data[k][5],
                    'href': data[k][6]
                }
            }
        }
    }
}

把这句话放在冒犯者的前面:

if (!data_object['slide'+i]) {
  data_object['slide'+i] = {};
}

把这句话放在冒犯者的前面:

if (!data_object['slide'+i]) {
  data_object['slide'+i] = {};
}

要构造的数据结构似乎有一个不必要的嵌套对象。您不需要具有一个名为Shape#的属性的对象。我只是将幻灯片#数组改为2D。您想要构建的数据结构似乎有一个不必要的嵌套对象。您不需要具有一个名为Shape#的属性的对象。我只需要将幻灯片#数组改为2D。