动态创建二维对象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。