用VC的说法就是
struct A
{
int n;
};struct B
{
int n;
A a;
};vector<B> arr;
我的方法:
function PlanUnit(n)
{
for (var i=0; i<n ;i++)
this[i] = {num : 0, context : ""};
}
function Plan(n)
{
for (var i=0; i<n; i++)
{
this[i] = {num : 0, context : "", planunit : new PlanUnit(1)};
}
}
var arr = new Plan(1);
arr[0].num = 1;
arr[0].planunit[0].num = 2;
arr[0].planunit[1] = new PlanUnit(1);
arr[0].planunit[1].num = 3;
var newplan = new Plan(1);
arr[1] = newplan; // 肯定要声明一个临时的 不这么写不行 不明白为啥
arr[1].planunit = new PlanUnit(1);
arr[1].planunit[0].num = 2;
arr[1].planunit[1].num = 3;
arr[1].planunit[2] = new PlanUnit(1);
arr[1].planunit[2].num = 3;
上面的程序没问题
但是关键是在new前判断就不行
var arr = new Plan(1);
arr[0].num = 1;
arr[0].planunit[0].num = 2;
arr[0].planunit[1] = new PlanUnit(1);
arr[0].planunit[1].num = 3;
var newplan = new Plan(1);
arr[1] = newplan;
arr[1].planunit = new PlanUnit(1);
arr[1].planunit[0].num = 2;
if (typeof(arr[1].planunit[1]) == undefine) // 这里就会异常 arr[1].planunit[1] = new PlanUnit(1);
arr[1].planunit[1].num = 3;
arr[1].planunit[2] = new PlanUnit(1);
arr[1].planunit[2].num = 3;
我不想用try 因为感觉应该有更直接的方法 望前辈们指教
struct A
{
int n;
};struct B
{
int n;
A a;
};vector<B> arr;
我的方法:
function PlanUnit(n)
{
for (var i=0; i<n ;i++)
this[i] = {num : 0, context : ""};
}
function Plan(n)
{
for (var i=0; i<n; i++)
{
this[i] = {num : 0, context : "", planunit : new PlanUnit(1)};
}
}
var arr = new Plan(1);
arr[0].num = 1;
arr[0].planunit[0].num = 2;
arr[0].planunit[1] = new PlanUnit(1);
arr[0].planunit[1].num = 3;
var newplan = new Plan(1);
arr[1] = newplan; // 肯定要声明一个临时的 不这么写不行 不明白为啥
arr[1].planunit = new PlanUnit(1);
arr[1].planunit[0].num = 2;
arr[1].planunit[1].num = 3;
arr[1].planunit[2] = new PlanUnit(1);
arr[1].planunit[2].num = 3;
上面的程序没问题
但是关键是在new前判断就不行
var arr = new Plan(1);
arr[0].num = 1;
arr[0].planunit[0].num = 2;
arr[0].planunit[1] = new PlanUnit(1);
arr[0].planunit[1].num = 3;
var newplan = new Plan(1);
arr[1] = newplan;
arr[1].planunit = new PlanUnit(1);
arr[1].planunit[0].num = 2;
if (typeof(arr[1].planunit[1]) == undefine) // 这里就会异常 arr[1].planunit[1] = new PlanUnit(1);
arr[1].planunit[1].num = 3;
arr[1].planunit[2] = new PlanUnit(1);
arr[1].planunit[2].num = 3;
我不想用try 因为感觉应该有更直接的方法 望前辈们指教
function PlanUnit(n)
{
for (var i=0; i<n ;i++)
this[i] = {num : 0, context : ""};
}
function Plan(n)
{
for (var i=0; i<n; i++)
{
this[i] = {num : 0, context : ""};
}
}var arr = new Plan(2);
arr[0].num = 1;
arr[0].planunit = new PlanUnit(2);
arr[0].planunit[0].num = 2;
arr[0].planunit[1].num = 3;arr[1].planunit = new PlanUnit(3);
arr[1].planunit[0].num = 2;
arr[1].planunit[1].num = 3;
arr[1].planunit[2].num = 3;直接声明json很方便:
var arr = [
{
num: 1,
planunit: [
{
num: 2
},
{
num: 3
}
]
},
{
planunit: [
//....
]
}
]
不利用语言的特性,硬搬其他语言的代码,唉我只蹭分,后续问题找其他人吧
PlanUnit = function(n)
{
var oThis = new Array();
//oThis.length += n;
for (var i=0; i<n; i++)
{
oThis[i] = {num : 0, starttime : "", endtime : "", context : "", path : "", re : ""};
}
return oThis;
}PlanKind = function(n)
{
var oThis = new Array();
for (var i=0; i<n; i++)
{
oThis[i] = {num : 0, context : "", modtime : "", planunit : new PlanUnit(1) };
}
return oThis;
}if (arrPlanTree[i] == null)
{
arrPlanTree[i] = new PlanKind(1);
arrPlanTree[i].planunit = new PlanUnit(1);
}
if (arrPlanTree[i].planunit[j] == null)
arrPlanTree[i].planunit[j] = new PlanUnit(1);
大家帮我看看有什么问题 或者更好的方法~~
逻辑是自己写的