认识javascript数组

上传人:mg****85 文档编号:37017716 上传时间:2018-04-05 格式:DOC 页数:6 大小:44KB
返回 下载 相关 举报
认识javascript数组_第1页
第1页 / 共6页
认识javascript数组_第2页
第2页 / 共6页
认识javascript数组_第3页
第3页 / 共6页
认识javascript数组_第4页
第4页 / 共6页
认识javascript数组_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《认识javascript数组》由会员分享,可在线阅读,更多相关《认识javascript数组(6页珍藏版)》请在金锄头文库上搜索。

1、认识认识 Javascript 数组数组 转载:http:/ 1.认识数组认识数组 数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript 不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象) ,所以 数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组定义数组 声明有10个元素的数组var a = new Array(10);此时为 a 已经开辟了内存空间,包含10个元素,用数组名称加 下标 来调用,例如 a2 但此时元素并未初始化,调用将返回 undefined 以下代码定义了个可变数组,并进行赋值var a = new Array();a

2、0 = 10;a1 = “aaa“;a2 = 12.6;上面提过了,数组里面可以放对象,例如下面代码var a = new Array();a0 = true;a1 = document.getElementById(“text“);a2 = x:11, y:22;a3 = new Array();数组可以实例化的时候直接赋值,例如var a = new Array(1, 2, 3, 4, 5);var b = 1, 2, 3, 4, 5;a 和 b 都是数组,只不过 b 用了隐性声明,创建了另一个实例,此时如果用 alert(a=b)将 弹出 false 1.2 多维数组多维数组 其实 Ja

3、vascript 是不支持多维数组的,在 asp 里面可以用 dim a(10,3)来定义多维数组,在 Javascript 里面,如果用 var a = new Array(10,3) 将报错 但是之前说过,数组里面可以包含对象,所以可以把数组里面的某个元素再声明为数组, 例如var a = new Array();a0 = new Array();a00 = 1;alert(a00); /弹出 1声明的时候赋值var a = new Array(1,2,3, 4,5,6, 7,8,9);var b = 1,2,3, 4,5,6, 7,8,9;效果一样,a 采用常规实例化,b 是隐性声明,结

4、果都是生成一个多维数组 1.3 Array literals这个还真不知中文怎么叫,文字数组? 说到数组,不得不说到 Array Literals,数组其实是特殊的对象,对象有特有属性和方法, 通过 对象名.属性 、对象.方法() 来取值和调用,而数组是通过下标来取值,Array Literals 跟数组有很多相似,都是某数据类型的集合,但是 Array Literals 从根本来说,是个对象, 声明和调用,跟数组是有区别var aa = new Object();aa.x = “cat“;aa.y = “sunny“;alert(aa.x); /弹出 cat创建一个简单的对象,一般调用是通过

5、 aa.x,而如果当成 Array literals 的话,用 alert(aa“x”)一样会弹出 catvar a = x:“cat“, y:“sunny“;alert(a“y“); /弹出 sunny这是另一种创建对象的方法,结果是一样的 2.数组元素的操作数组元素的操作 上面已经说过,可以通过 数组下标 来读写元素 下标的范围是 0 (23(上标2) -1),当下标是负数、浮点甚至布尔值的时候,数组会自动转 换为对象类型,例如var b = new Array();b2.2 = “XXXXX“;alert(b2.2); /- XXXXX此时相当于 b“2.2” = “XXXXX” 2.1

6、数组的循环数组的循环var a = 1,2,3,4,5,6;for(var i =0; i 123,sunnycatalert(a); / - 123alert(b.concat(c, d); / - sunnycatwww,21,idoobject Objectalert(c.concat(b); / - www,21,ido,sunnycatalert(e.concat(11,22,33).join(“ # “); / - 1 # 2 # 3 # 4 # 5,6,7,8 # 11 # 22 # 33需要注意的是只能用于数组或字符串,如果被连接(前面的 a)的是数值、布尔值、对象, 就会报错

7、,字符串连接数组时,字符串会跟数组首元素拼接成新元素,而数组连接字符串 则会追加新元素(这点我也不清楚原委,知情者请透露) ,对于数组里面包含数组、对象的, 连接后保持原样 join 用指定间隔符连起来,把数组转为字符串var a = a,b,c,d,e,f,g;lert(a.join(“,“); / - a,b,c,d,e,f,g 相当于 a.toString()alert(a.join(“ x “); / - a x b x c x d x e x f x g这个很容易理解,但需要注意的是只转换一维数组里面,如果数组里面还有数组,将不是 采用 join 指定的字符串接,而是采用默认的 to

8、String(),例如var a = a,b,c,d,e,f,g,11,22,33;alert(a.join(“ * “); / - a * b * c * d * e * f * g * 11,22,33数组里面的数组,并没用 * 连接 pop 删除数组最后一个元素,并返回该元素var a = “aa“,“bb“,“cc“;document.write(a.pop(); / - ccdocument.write(a); / - aa, bb如果数组为空,则返回 undefined push 往数组后面添加数组,并返回数组新长度var a = “aa“,“bb“,“cc“;document.w

9、rite(a.push(“dd“); / - 4document.write(a); / - aa,bb,cc,dddocument.write(a.push(1,2,3); / - 5document.write(a); / - aa,bb,cc,dd,1,2,3跟 concat 的区别在于,concat 不影响原数组,直接返回新数组,而 push 则直接修改原数组, 返回的是数组新长度 sort 数组排序,先看个例子var a = 11,2,3,33445,5654,654,“asd“,“b“;alert(a.sort(); / - 11,2,3,33445,5654,654,asd,b结

10、果是不是很意外,没错,排序并不是按整型大小,而是字符串对比,就是取第一个字符 的 ANSI 码对比,小的排前面,相同的话取第二个字符再比,如果要按整型数值比较,可 以这样var a = 11,2,3,33445,5654,654;a.sort(function(a,b) return a - b;);alert(a); / - 2,3,11,654,5654,33445sort()方法有个可选参数,就是代码里的 function,这是个简单的例子,不可对非数字进行 排序,非数字需要多做判断,这里就不多讲 reverse 对数组进行反排序跟,sort()一样,取第一字符 ASCII 值进行比较v

11、ar a = 11,3,5,66,4;alert(a.reverse(); / - 4,66,5,3,11如果数组里面还包含数组,则当为对象处理,并不会把元素解出来var a = a,b,c,d,e,f,g,4,11,33;alert(a.reverse(); / - 4,11,33,g,f,e,d,c,b,aalert(a.join(“ * “); / - 4,11,33 * g * f * e * d * c * b * a按理应该是11排最后面,因为这里把 4,11,33 当做完整的对象比较,所以被排在第一位。 看不明白的话,用 join()串起来,就明了多 shift 删除数组第一个元

12、素,并返回该元素,跟 pop 差不多var a = “aa“,“bb“,“cc“;document.write(a.shift(); / - aadocument.write(a); / - bb,cc当数组为空时,返回 undefined unshift 跟 shift 相反,往数组最前面添加元素,并返回数组新长度var a = “aa“,“bb“,“cc“;document.write(a.unshift(11); / - 4 注:IE 下返回 undefineddocument.write(a); / - 11,aa,bb,ccdocument.write(a.unshift(11,22

13、); / - 5document.write(a); / - 11,22,11,aa,bb,ccdocument.write(a.unshift(“cat“); / - 6document.write(a); / - cat,11,22,11,aa,bb,cc注意该方法,在 IE 下将返回 undefined,貌似微软的 bug,我在 firefox 下则能正确发挥数 组新长度 slice 返回数组片段var a = a,b,c,d,e,f,g;alert(a.slice(1,2); / - balert(a.slice(2); / - c,d,e,f,galert(a.slice(-4);

14、/ - d,e,f,galert(a.slice(-2,-6); / - 空a.slice(1,2),从下标为1开始,到下标为2之间的数,注意并不包括下标为2的元素 如果只有一个参数,则默认到数组最后 -4是表示倒数第4个元素,所以返回倒数的四个元素 最后一行,从倒数第2开始,因为是往后截取,所以显然取不到前面的元素,所以返回空数 组,如果改成 a.slice(-6,-2) 则返回 b,c,d,e splice 从数组删除某片段的元素,并返回删除的元素var a = 1,2,3,4,5,6,7,8,9;document.write(a.splice(3,2); / - 4,5document.write(a); / - 1,2,3,6,7,8,9document.write(a.splice(4); / - 7,8,9 注:IE 下返回空document.write(a); / - 1,2,3,6document.write(a.splice(0,1); / - 1document.write(a); / - 2,3,6document.write(a.splice(1,1,“aa“,“bb“,“cc“); / - 3document.write(a); / - 2,aa,bb,cc,6,7,8,9document.write(a.splice(1,2,“ee

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号