Javascript的数组总结
作者:泡菜 来源:泡菜blog 发布时间:2009-02-03 13:07:00
由于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;
};
猜你喜欢
- 触发器权限和所有权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的时候找
- 前言哈希 又称作 “散列”,它接收任何一组任意长度的输入信息,通过 哈希 算法变换成固定长度的数据指
- 为某国税局开发一综合 * ,需要建立一个庞大的国税系统通讯录数据库,从各省、市到每名具体工作人员,项目较多,该如何设计各表呢?数据库的表设计
- 或许现在关心交互设计的设计师们大部分来自于了互联网行业,所以我们看到当你搜索“交互设计”时更多的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