搜索:
首页 >> JavaScript >> Js实例技巧 >> Javascript的数组总结

Javascript的数组总结

2009-2-3 作者:泡菜 来源:泡菜blog 投递文章

由于javascript是一种无类型语言,所以一个数组的元素可以具有任意的数据类型,同一个数组的不同元素可以具有不同的类型,数组的元素设置可以包含其他数组,这样就可以创建一个复杂的数组了.并且在这点上说javascript作为一种脚本语言不同于那种严格的面向对象的c++.c#,java 了.具有更高的灵活性.

在javascript1.1和其后的版本中,数组是用构造函数Array()和运算符new来创建,可用以下的三种方式来创建javascript 中的数组.

var a=new Array();
  var b=new Array(a,b,c,d,e); 
var c=new Array(20); 

1.new Array(5) 是指创建一个长度为5的数组还是创建一个元素值为5的数组?创建一个长度为5的数组。
      2. 数组下标是从0开始还是从1开始?从0开始,所以数组的上限等于数组的长度-1。
      3.数组下标的最大值是多少?2的32次方再减2,即4294967295,大约40亿,够用吧。
      4.数组下标为小数时会自动取整吗?不会,将忽略或发生运行时错误。
      5.支持多维数组吗?不支持!不过可以将数组的每个元素再定义为数组,以达到多维数组的目的。
      6.如何访问数组元素?使用“[]”,比如数组名为arr,要访问第一个元素,就使用arr[0]。


      JavaScript数组 (JScript 版本 2)共有3个属性、13个方法。3个属性中只有length是比较重要的,但比较简单,另外 constructor 与 prototype 属性是 object 共有的且不常用,所以对 Array 属性不作介绍,而对Array的13个方法分组介绍,便于记忆。

pop 与 push:pop 移除最后一个元素并返回该元素值;push([item1 [item2 [. . . [itemN ]]]])将一个或多个新元素添加到数组结尾,并返回数组新长度,如果添加的是数组则先用逗号将该数组的各元素连接起来再添加。

shift 与 unshift:分别对应于 pop 和 push,只是这是在数组的开始位置进行。注意当从开始位置移除或添加元素时,会将数组中的元素前移或后移。

slice 与 splice:slice(start, [end])以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素;splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])移除数组一个或多个元素,如果必要,在所移除元素的位置上插入新元素,数组形式返回所移除的元素,如果插入的是数组,则只插入数组的第一个元素。

reverse 与 sort:reverse() 反转元素(最前的排到最后、最后的排到最前),并且返回数组地址;sort()对数组排序并且返回数组地址。

concat 与 join:concat 将多个数组(也可以是字符串)连接为一个数组;join(separator)返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用。

使用prototype来扩展数组功能。

// 自定义数组删除  
Array.prototype.Delete=function(n){  
    if (n<0) return this;  
    return this.slice(0,n).concat(this.slice(n+1,this.length));  
};  
// 数组洗牌  
Array.prototype.Random=function(){  
    var nr=[], me=this, t;  
    while(me.length>0)  
    {  
        nr[nr.length] = me[t = Math.floor(Math.random() * me.length)];  
        me = me.del(t);  
    }  
    return nr;  
};  
// 数字数组排序  
Array.prototype.SortNumber=function(f){  
    if (!f) f=0;  
    if (f==1) return this.sort(function(a,b){return b-a;});  
    return this.sort(function(a,b){return a-b;});  
};  
// 获得数字数组的最大项  
Array.prototype.GetMax = function(){  
    return this.SortNumber(1)[0];  
};  
// 获得数字数组的最小项  
Array.prototype.GetMin = function(){  
    return this.SortNumber(0)[0];  
};  
// 数组第一次出现指定元素值的位置  
Array.prototype.IndexOf = function(o){  
    for (var i=0; i<this.length; i++) if (this[i]==o) return i;  
    return -1;  
};  
// 移除数组中重复的项  
Array.prototype.RemoveRepeat=function(){  
    this.sort();  
    var rs = [];  
    var cr = false;  
    for (var i=0; i<this.length; i++)  
    {  
        if (!cr) cr = this[i];  
        else if (cr==this[i]) rs[rs.length] = i;  
        else cr = this[i];  
    }  
    var re = this;  
    for (var i=rs.length-1; i>=0; i--) re = re.del(rs[i]);  
    return re;  
}; 


 

相关文章
手机版 Js实例技巧 Asp之家 Aspxhome.com
闽ICP备06017341号