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


猜你喜欢
- 前两天写了一篇《浅谈网站用户粘性的含义》的文章,有些个别网友问可否谈谈怎么样加强用户粘性的问题?虽然对此本人没有系统的理论做以支撑,但是既然
- 背景今天在工作中,同事遇到一个上传图片的问题:系统要求的图片大小不能超过512KB。但是同事又有很多照片。这要是每一个照片都用ps压缩的话,
- 在/etc/profile.d/简历oracle.sh内容如下在NLS_LANG设置编码ORACLE_HOME=/usr/lib/oracl
- 一、auth模块# 创建超级用户python manage.py createsuperuserfrom django.contrib im
- 今天要介绍的是,如何生成一个"继承"多个对象的实例。 比如,现在有一个"动物"对象的构造函数, fu
- 前面的话在介绍Date对象之前,首先要先了解关于日期和时间的一些知识。比如,闰年、UTC等等。深入了解这些,有助于更好地理解javascri
- 我们在.NET程序的开发过程中,常常需要和用户进行信息交互,比如执行某项操作是否成功,“确定”还是“取消”,以及选择“确定”或“取消”后是否
- 【方法一】: 通过setuptools来安装python模块首先下载 http://peak.telecommunity.com/dist/
- 一、概念介绍矩形树图(Treemap),即矩形式树状结构图,利用矩形的面积表示数值的大小,颜色用于类别区分,常用于呈现多类别的一维数值比较,
- 经常有网友会问,SQL Server占用了太多的内存,而且还会不断的增长;或者说已经设置了使用内存,可它没有用到那么多,这是怎么一回事儿呢?
- 今天有点新的与大家分享,关于selenium与xpath之间爬数据获取指定位置的时候,方式不一样哦。详情可以看我的代码,以b站来看好吧:查看
- 转自: http://www.qqread.com/mysql/z442108305.html对于程序开发人员而言,目前使用最流行的两种后台
- 使用本文提供的JavaScript脚本,配合Dreamweaver的层和行为的运用,可以在页面中显示可拖动的精美月历。具体制作步骤如下:1、
- 变量命名在《初识永远强大的函数》一文中,有一节专门讨论“取名字的学问”,就是有关变量名称的问题,本温故而知新的原则,这里要复习:名称格式:(
- golang支持两种随机数生成方式:math/rand // 伪随机cr
- 1. 代码样例console.log('\033[42;30m DONE \033[40;32m Compiled successf
- 如果用树作为索引的数据结构,每查找一次数据就会从磁盘中读取树的一个节点,也就是一页,而二叉树的每个节点只存储一条数据,并不能填满一页的存储空
- 本文实例讲述了Python高级编程之继承问题。分享给大家供大家参考,具体如下:多继承问题1.单独调用父类: 一个子类同时继承自多个父类,又称
- 本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中
- 爬虫的起因官方文档或手册虽然可以查阅,但是如果变成纸质版的岂不是更容易翻阅与记忆。如果简单的复制粘贴,不知道何时能够完成。于是便开始想着将A