js多维对象数组的思考

我们先来设想这样一个场景:

一个学校下面有很多班级,一个班级下面有很多学生。

学校和班级——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 数组由多个对象构成,构成对象的也可以是数组。

时间: 2025-01-19 14:20:05

js多维对象数组的思考的相关文章

js 定义对象数组(结合)多维数组方法_javascript技巧

在php中定义数组很简单,但是在js中如果搞成字符为下标会出错,所以结合对象来搞 var top_ = { 'index':'首页', 'user':'用户', 'tree':'模块树' } ; var all_list = [ { "index": [ {'name':'网站栏目管理','url':'1.html'}, {'name':'网站栏目管理2','url':'2.html'} ] }, { "user": [ {'name':'用户管理','url':'

扩展js对象数组的OrderByAsc和OrderByDesc方法

  看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了. 在对象数组里面经常有根据属性来进行排序的,升序,降序的,于是自己就想写一个类似于C#里面的orderBy的方法,代码如下: 代码如下: Array.prototype.OrderByAsc = function (func) { var m = {}; for (var i = 0; i < this.length; i++) {

js中的对象声明方式以及数组的一些用法

 本文为大家介绍下js中的对象声明方式以及数组的一些用法,下面有个不错的示例,感兴趣的朋友可以参考下,希望对大家有所帮助  代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <title> New Document &l

JS二维数组的定义说明

  本篇文章主要是对JS二维数组的定义进行了说明介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1.二维数组声明方式是下面这样的: var images=new Array(); //先声明一维 for(var i=0;i<10;i++){ //一维长度为10 images[i]=new Array(); //在声明二维 for(var j=0;j<20;j++){ //二维长度为20 images[i][j]=1; } } 2.二级数组使用方式应该是这样子的: alert(images[

关于JS中二维数组的声明方法_javascript技巧

如下所示: var myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一维长度为2 myarr[i]=new Array(); //再声明二维 for(var j=0;j<3;j++){ //二维长度为3 myarr[i][j]=i+j; // 赋值,每个数组元素的值为i+j } } 以上就是小编为大家带来的关于JS中二维数组的声明方法的全部内容了,希望对大家有所帮助,多多支持~ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.

扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路_javascript技巧

看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了. 在对象数组里面经常有根据属性来进行排序的,升序,降序的,于是自己就想写一个类似于C#里面的orderBy的方法,代码如下: 复制代码 代码如下: Array.prototype.OrderByAsc = function (func) { var m = {}; for (var i = 0; i < this.length; i++

json转js对象数组,求助

问题描述 json转js对象数组,求助 假设我有一个json对象,内容如下:{"10":"热卖商品","11":"限时抢购"},请问如何用js将其转换成这种格式? var data = [{ id: 10, text: '热卖商品' }, { id:11, text: '限时抢购'}]; 解决方案 var datajson = {"10":"热卖商品","11":&q

js对象数组的合并问题

问题描述 js对象数组的合并问题 var arr=[ {a:3,b:0,c:1}, {a:3,b:0,c:2}, {a:5,b:0,c:0}, {a:5,b:1,c:0} ] 判断:若a值相同,b也相同,合并 var arr=[ {a:3,b:0,c:1,2}, {a:5,b:0,c:0}, {a:5,b:1,c:0} ] 解决方案 var arr = [{ a: 3, b: 0, c: 1 }, { a: 3, b: 0, c: 2 }, { a: 5, b: 0, c: 0 }, { a:

关于js二维数组和多维数组的定义声明(详解)_javascript技巧

声明一维数组:var goodsArr = []; 赋值:goodsArr[0] = 'First Value'; 这个毫无争议,因为平时使用PHP比较多,而php语法是可以直接使用goodsArr[0] = 'First Value'; 这种方法声明数组并赋值的,但js不能这样使用,必须先声明数组存在.同理,如果是二维和多维数组在使用前也必须声明二维和多维的数组,举例二维数组: var goodsArr[0] = []; 必须先这样声明一下二维数组才能使用二维数组,否则会出错的. 以上就是小编