JavaScript中的二维数组和数组常用的方法

javascript中如何定义二维数组 http://hi.baidu.com/guicailea/blog/item/9ea68fdfeec40f19632798da.html

javascript 结构体示例 http://www.cnblogs.com/romce/articles/1148475.html

 

javascript中的类实现 http://www.cnitblog.com/CoffeeCat/archive/2008/02/25/40138.html

在JavaScript中,常常遇到使用二维数组,笔者常常都是并行数组进行实现,后来就看了下二维数组,整理了一下!


使用并行数组进行数组查询:
   <script language="JavaScript">
   var vipNames = ["Tom","Jertty","GlassFish","Jboss"];
   var vipAddresses = ["Beijing","Shanghai","Henan","Hebei"];
   var vipPhones = ["1101","1102","1103","1104"];
  
   function getVipData(form){
    var vipName = form.vipName.value;
    for(var i=0;i<vipNames.length;i++){
     if(vipName.toUpperCase() == vipNames[i].toUpperCase()){
      break;
     }
    }
   
    if(i<vipNames.length){
     form.vipAddress.value = vipAddresses[i];
     form.vipPhone.value = vipPhones[i];
    }else{
     form.vipName.value = "";
     form.vipAddress.value = "";
     form.vipPhone.value = "";
     alert("您输入的vip不存在!");
    }
   }
   </script>
html代码如下:
   <form name="vipData">
    vipName:<input type="text" size=20 name="vipName" onblur="getVipData(this.form)"/><br/><br/>
    vipAddress:<input type="text" size="30" name="vipAddress"/><br/><br/>
    vipPhone:<input type="text" size="30" name="vipPhone"/>
   </form>
这样做,数组之间都是约定好的.


其实多维数组的应用也不是多难,如我们要想找到地址为某个指定地址的vip用户的话,我们就可以直接把那个多维数组元素指出来就OK了!
下面是对多维数组学习的循序渐进的一种方法:
   <script language="JavaScript">
   //给"数据记录"定义个构造函数
   function vipData(vipName,vipAddress,vipPhone){
    this.vipName = vipName;
    this.vipAddress = vipAddress;
    this.vipPhone = vipPhone;
   }
  
   //定义一个User数组
   var vipUser = new Array();
   vipUser[0] = new vipData("Tom","Beijing","1101");
   vipUser[1] = new vipData("Jertty","Shanghai","1102");
   vipUser[2] = new vipData("GlassFish","Henan","1103");
   vipUser[3] = new vipData("Jboss","Hebei","1104");
  
   //可以使用俩种方法来访问数据项以及属性名称,通过数据基数索引
   var user = vipUser[0].vipName;
   //通过字符串索引
   vipUser["newUser"] = new vipData("Eclipse","Tianjin","1105");
   var tjUser = vipUser["newUser"].vipName;
  
   //这些可以用多维数组来实现
   var vipUsers = new Array();
   vipUsers[0] = new Array("Tom","Beijing","1101");
   vipUsers[1] = new Array("Jertty","Shanghai","1102");
   vipUsers[2] = new Array("GlassFish","Henan","1103");
   vipUsers[3] = new Array("Jboss","Hebei","1105");
  
   //写的更简单些
   var chinaVipUsers = [["Tom","Beijing","1101"],["Jertty","Shanghai","1102"],
        ["GlassFish","Henan","1103"],["Jboss","Hebei","1105"]];
   //此时如果要找出vipAddress为Henan的vip名字
   var heNanUser = vipUsers[2][0];//从二维数组中找出先纵向,后横向,但基数都是从0开始
   //alert("heNanUser:"+heNanUser);
   </script>

看完多维数组之后,我们再来看下几个常用的数组常用的属性和方法:
1、Array.prototype.userName = "Macolid"; //给Array对象加上一个名为userName的原型属性
在此js范围内创建出来的新的Array对象,都有默认的这个属性和属性值.可以对其值进行修改,但是修改也只是在新的对象范围内的修改.
function eat(){
    //eat apple       

}
Array.prototype.waitPerson = eat;
这时就把eat函数赋给了Array对象作为原型函数.基本和原型属性类似.
2、首先,我将array看成Array的一个对象.介绍array.concat()方法.
此方法比较有用,它是将俩个数组中的数组元素连接起来,返回一个新的数组.如:var array = arrayOne.concat(arrayTwo);
3、array.join(separatorString);
此方法也在我们实际的项目中也经常会用到,它将我们数组中的元素,使用参数中提供的特定的符号组成字符串作为参数传递给具体的action.
4、array.push()、array.pop()、array.unshift()、array.shift()这四个方法,前俩个方法是工作在数组对象的尾部的,push是每增加一个数组元素,都按照原来的数组,在尾部上加上一个元素.pop方法返回数组尾部的元素,并将其删除掉,影响数组的长度.而后俩个方法是工作在数组的头部的.unshift()中有个参数,将把元素做为第一个数组元素添加到数组中,而shift()返回数组中第一个数组元素,并将其删除.影响数组的长度.
5、array.reverse()此方法返回的是一个数组顺序相反的副本.在排序中经常用到.
6、array.slice(startIndex,endIndex)从这个方法以后,这些方法就比较有意思了,此方法的第一个参数是必须的,如果没有第二个参数,返回从第一个参数开始到数组元素结束的一个新的数组.如果有第二个参数,则返回从第一个参数到第二个参数之间的数组元素组成的一个新的数组.
7、array.sort(option function)
如果默认没有的情况下,JavaScript会把它们快照成字符串,然后对它们的字符串排序
排序以字符的ASCII值为标准,这就意味着数字是按照它们的字符串值来排列的,而不是通过值的大小来排列
解决方法:
在JavaScript中比较函数的返回值是有意义的.a和b相比较,如果<0,哪么a就排在b后面
如果=0,位置不变,如果>0,a就排在b前面
所以,当我们需要做一些自定义的排序的时候,我们就要定义一个compare方法,
将要排序的参数,进行比较
如:我们可以排序字符串,按照最后一个字符的大小进行排序
根据用户的年龄进行排序,如userA.age - userB.age
********注意数组排序改变了原来的数组顺序************
其在项目中经常和reverse()函数联合使用
8、array.splice IE5+ NN4+

这个方法真的很不错,有三个参数,其中第一和第二个是必选的,第三个是可选的
第一个参数是个整数,它表示的是数组的位置,第二个参数是个整数,它表示从第一个参数后,连续几个数组元素将被删除.删除之后则影响数组长度.
第三个参数为可选参数,它将一些变量添加到数组中.其实,我们将第二个元素设置成0之后,就可以在指定的位置上添加数组元素了
9、toLocaleString()和toString()方法都是返回字符串,数组中的各个元素加上","隔开.toLocalString()比toString()更加精确一些
当时NN6+ 和 IE5.5+实现的情况不一样,NN上实现和toString()一样,但是IE5.5+实现的就更加精确一些

文章来源:http://www.adminii.com/thread-343-1-1.html

原文地址:https://www.cnblogs.com/carl2380/p/2621632.html