网络编程
位置:首页>> 网络编程>> JavaScript>> Javascript的数组总结

Javascript的数组总结

作者:泡菜 来源:泡菜blog 发布时间:2009-02-03 13:07:00 

标签:数组,JavaScript,数据,脚本,语言

由于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;  
}; 


 

0
投稿

猜你喜欢

  • 触发器权限和所有权CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner
  • ASP 能快速执行你的 * 页,但你还可以通过紧缩代码和数据库连接以使它们执行更快。这是一篇关于怎样精简代码和Asp 特征以获得最快执行速度
  • 我有个MM在网上面安了家,想做一个关于特效的网站。她虽然懂一点网页制作,但是她的机器配置比较低,有时为了反复试验页面上一些特殊效果,而打开D
  • 之前看到很多人一直都问CSS 中DIV垂直居中的问题,看来对此的需求还不少。现在就把我经验拿出来分享一下,希望大家鼓鼓掌。因为在 CSS 中
  • Debug Textarea这个东西是在线写 js 脚本的时候,用来即时查错的东西!也就是,当发现所编写的脚本有问题的时候会有相应的提示,并
  • 如何修改被表单引用的ASP页面?formhandler.asp<HTML><BODY BGCOLOR="
  • 问题:这里只解决一个问题,到底什么是Access?设计一个数据库管理系统,用access在access里面设计好表,查询,然后再用vb做窗体
  • 一直在用JS写ASP,也不是特别原因,只是当初学的是JS,后来学ASP时知道ASP也可以用JS写,就没去学VBS.前几个月刚学ASP的时候找
  • 前言哈希 又称作 &ldquo;散列&rdquo;,它接收任何一组任意长度的输入信息,通过 哈希 算法变换成固定长度的数据指
  • 为某国税局开发一综合 * ,需要建立一个庞大的国税系统通讯录数据库,从各省、市到每名具体工作人员,项目较多,该如何设计各表呢?数据库的表设计
  • 或许现在关心交互设计的设计师们大部分来自于了互联网行业,所以我们看到当你搜索“交互设计”时更多的BLOG和文章是在谈论互联网,网站的导航,注
  • 看到这个需求的时候就在暗爽,又可以搞定一个知识点了。哈哈,一天的奋斗之后,果然有所收获,而且经过怿飞的指点,在跨域问题解决上还有所突破(不通
  • 不知各位是否有手写代码的习惯。例如:要在一个单元格插入一段CSS代码,或者一段Javascript代码,怎么做才比较快捷方便呢?虽然Drea
  • 在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键
  • 1. @@rowcount: 获取受影响行数 代码如下:update SNS_TopicData set TopicCount=TopicC
  • 长期以来我就有对几年来交互设计的心得进行总结整理的想法。回到中国来亲身体会到不少同行,主要是交互设计师和视觉设计师对于交互设计的困惑,以及其
  • 以前见过一个很漂亮的网页提示信息,就是把鼠标放到网页的文字或者图片上面就会有提示的那种透明的,还带个箭头,很漂亮,不知道谁在哪见过没有,感谢
  • my.ini文件[mysqld]max_allowed_packet = 10M
  • CSSer与其他IT职位一样,在找工作的时候,都会面临着面试官提出的问题,或者给出的试卷。一、超链接点击过后hover样式就不出现的问题?被
  • 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Fire
手机版 网络编程 asp之家 www.aspxhome.com