动态创建二维对象Javascript
Dynamically create 2 dimensional object Javascript
我有一个棘手的情况,我不能找出一个好的解决方案。我有一个以下类型的数组:
data = [ '1', '1', '964', '718', '0', '0', '0' ];
内容如下:
data[0] =幻灯片号
data[1] =形状数
data[2] = width
data[3] = height
data[4] = left
data[5] = top
data[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]
}
}
}
}
}
我得到不能设置属性'shapes1'的undefined可能是因为:
data_object['slide'+i]['shapes'+j] // this line
哪一种方式可以创建我想要的对象格式?
注:data变量保存了多个看起来相同的数组。是数组中的数组。其他一些测试数据将是:
[ '1', '1', '964', '718', '0', '0', '0' ]
[ '2', '1', '964', '718', '0', '0', '0' ]
[ '2', '2', '311', '379', '612', '179', '0' ]
[ '2', '3', '35', '39', '36', '694', '0' ]
[ '2', '4', '35', '39', '75', '694', '0' ]
[ '3', '1', '964', '718', '0', '0', '0' ]
[ '3', '2', '116', '137', '46', '598', '16' ]
[ '3', '3', '35', '39', '181', '696', '0' ]
[ '3', '4', '35', '39', '220', '696', '0' ]
[ '3', '5', '35', '39', '259', '696', '0' ]
[ '3', '6', '35', '39', '297', '696', '0' ]
[ '3', '7', '35', '39', '337', '696', '0' ]
[ '3', '8', '51', '51', '658', '541', '0' ]
[ '3', '9', '51', '51', '787', '541', '0' ]
[ '4', '1', '964', '718', '0', '0', '0' ]
[ '4', '2', '116', '137', '46', '598', '62' ]
[ '4', '3', '35', '39', '181', '696', '0' ]
[ '4', '4', '35', '39', '221', '696', '0' ]
[ '4', '5', '35', '39', '260', '696', '0' ]
[ '4', '6', '35', '39', '298', '696', '0' ]
[ '4', '7', '56', '56', '894', '260', '0' ]
[ '5', '1', '964', '718', '0', '0', '0' ]
[ '5', '2', '116', '137', '46', '598', '24' ]
[ '5', '3', '35', '39', '181', '696', '0' ]
[ '5', '4', '35', '39', '298', '696', '0' ]
[ '5', '5', '35', '39', '221', '696', '0' ]
[ '5', '6', '35', '39', '260', '696', '0' ]
把这个放到违规行前面:
if (!data_object['slide'+i]) {
data_object['slide'+i] = {};
}
相关文章:
- 二维对象/将数组关联到三维对象Javascript中
- 在 javascript 中的二维对象数组中查找值索引
- 将类似表的二维数组转换为对象 (JavaScript)
- 如何用javascript将带有JSON对象的二维数组制作成单个数组
- Javascript二维对象数组
- 为什么不可能将对象保存在二维数组中
- Javascript对象中的二维数组
- 将长度为n的二维数组转换为级别为n的嵌套对象
- 在JavaScript中用对象填充二维数组时出现问题
- 使用javascript创建二维对象或数组
- 在二维阵列中指定对象
- 将二维数组转换为对象
- 可以创建对象并将其推入二维数组
- 动态创建二维对象Javascript
- 逻辑创建二维数组到多维对象使用javascript
- 在二维环境中以百分比为增量将对象从矢量A移动到B
- JavaScript:使用第一个“行”将二维数组转换为对象数组来定义属性
- 如何将二维数组的行推送到对象
- 如何创建具有字符串索引的二维对象并循环遍历结果
- D3在二维对象数组中访问最大值-刷Y轴