我们先来设想这样一个场景:
一个学校下面有很多班级,一个班级下面有很多学生。
学校和班级——1:n
班级和学生——1:n
为了简便起见,我们就不给三个实体分配过多属性了。
学校有如下属性:名称sname,位置address。
班级有如下属性:名称cname,年级grade。
学生有如下属性:姓名stuname,学号stunum。
那么我们用js数组怎么表达这样一种关系?
// 定义学校对象
var school = {
sname:"一所大学",
address:"一个地方",
classes:[ ]
};
// 给学校数组添加班级
school.classes.push({
'cname':"一班",
'grade':"一年级"
students:[ ]
});
school.classes.push({
'cname':"二班",
'grade':"一年级"
students:[ ]
});
// 给班级数组添加学生
for(var m=0;m<school.classes.length;m++)
{
school.classes[m].students.push({
'stuname':"xy"+m,
'snum':m
});
}
// 取出班级数组
for(var m=0;m<school.classes.length;m++)
{
if(school.classes[m].cname=="一班")
{.......................................}
}
// 取出学生数组
for(var m=0;m<school.classes.length;m++)
{
for(var n =0;n<school.classes[m].students;n++)
{
if(school.classes[m].students[n].snum==1)
{.........................................................}
}
}
当然,真正赋值的时候,可以通过$.getJSON,从数据库中取出,然后再赋值。
从这个例子中我们可以学些什么呢?
1 { }表示一个json对象,是一对键值对。[ ]表示一个数组,可以由多个json对象构成一个数组。
2 js数组相当灵活。作为一种弱类型的语言,有些东西可以边申明边用。如上述的那些属性。
3 数组由多个对象构成,构成对象的也可以是数组。