[英]Javascript Multi Dimensional Object with named and numbered Index
How to store this structure in javascript object, tried many ways, but couldn't find a complete solution. 如何将这种结构存储在javascript对象中,尝试了多种方法,但找不到完整的解决方案。
var Scheduling = new Object();
//first Milestone
Scheduling[0]['MilestoneName'] = "Milestone One";
//Subtask List
Scheduling[0]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[0]['SubTask'][0]['CompletionPercent'] = "50";
Scheduling[0]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[0]['SubTask'][1]['CompletionPercent'] = "80";
//Second Milestone
Scheduling[1]['MilestoneName'] = "Milestone Two";
Scheduling[1]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[1]['SubTask'][0]['CompletionPercent'] = "20";
Scheduling[1]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[1]['SubTask'][1]['CompletionPercent'] = "15";
console.log(JSON.stringify[x]);
You need to initialize each object before assigning their properties. 您需要在分配每个对象的属性之前对其进行初始化。 Try adding this;
尝试添加这个;
Scheduling[0]={};
And you need to initialize each nested object and array along the way before assigning their properties. 而且,在分配它们的属性之前,您需要一路初始化每个嵌套的对象和数组。
I updated first part of your code as follows: 我更新了代码的第一部分,如下所示:
var Scheduling = new Object(); Scheduling[0] = {}; //first Milestone Scheduling[0]['MilestoneName'] = "Milestone One"; //Subtask List Scheduling[0]['SubTask'] = []; Scheduling[0]['SubTask'][0] = {}; Scheduling[0]['SubTask'][0]['SubTaskName'] = "SubTask One"; Scheduling[0]['SubTask'][0]['CompletionPercent'] = "50"; Scheduling[0]['SubTask'][1] = {}; Scheduling[0]['SubTask'][1]['SubTaskName'] = "SubTask Two"; Scheduling[0]['SubTask'][1]['CompletionPercent'] = "80"; console.log(Scheduling);
You're never instantiating the object you want to assign MilestoneName
to, only it's parent. 您永远都不会实例化您要为其分配
MilestoneName
的对象,只有它是父对象。
You could, for example, try this: 例如,您可以尝试以下操作:
var Scheduling = new Array(); // You're only using numbers as indexes, use an array! //first Milestone Scheduling.push({ MilestoneName: "Milestone One", SubTask: [ { SubTaskName: "SubTask One", CompletionPercent: 50, }, { SubTaskName: "SubTask Two", CompletionPercent: 80, }, ] }); Scheduling.push({ MilestoneName: "Milestone Two", SubTask: [ { SubTaskName: "SubTask One", CompletionPercent: 20, }, { SubTaskName: "SubTask Two", CompletionPercent: 15, }, ] }); console.log('Object: %o, String: %s', Scheduling, JSON.stringify(Scheduling))
You can also construct nested objects like this: 您也可以像这样构造嵌套对象:
var Scheduling = {};
//first Milestone
Scheduling[0] = {
'MilestoneName': "Milestone One",
'SubTask': {
0: {
'SubTaskName': "SubTask One",
'CompletionPercent': "20"
},
1: {
// and so on ...
}
}
};
I would also recomend to use arrays instead, wherever you deal with incremental index: 无论您在哪里处理增量索引,我都建议改用数组:
var Scheduling = []; // array instead
//first Milestone
Scheduling[0] = {
// .. like before
'SubTask': [ //here also an array
{
// task one
},
{
// task two
}
],
This is my final code 这是我的最终代码
var Scheduling = new Object();
//first Milestone
Scheduling[0] = {};
Scheduling[0]['MilestoneName'] = "Milestone One";
//Subtask List
Scheduling[0]['SubTask'] = {};
Scheduling[0]['SubTask'][0] = {};
Scheduling[0]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[0]['SubTask'][0]['CompletionPercent'] = "50";
Scheduling[0]['SubTask'][1] = {};
Scheduling[0]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[0]['SubTask'][1]['CompletionPercent'] = "80";
//Second Milestone
Scheduling[1] = {};
Scheduling[1]['MilestoneName'] = "Milestone One";
//Subtask List
Scheduling[1]['SubTask'] = {};
Scheduling[1]['SubTask'][0] = {};
Scheduling[1]['SubTask'][0]['SubTaskName'] = "SubTask One";
Scheduling[1]['SubTask'][0]['CompletionPercent'] = "50";
Scheduling[1]['SubTask'][1] = {};
Scheduling[1]['SubTask'][1]['SubTaskName'] = "SubTask Two";
Scheduling[1]['SubTask'][1]['CompletionPercent'] = "80";
alert(JSON.stringify(Scheduling));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.