JavaScript之数组Array详解_第1页
JavaScript之数组Array详解_第2页
JavaScript之数组Array详解_第3页
JavaScript之数组Array详解_第4页
JavaScript之数组Array详解_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JavaScript之 数组(Array)详解篇一:Javascript数组及其操作Javascript数组及其操作1. 如何创建数组2. 如何对数组进行操作(添加 ,删除 ,读取)3. 数组常见方法和属性如何创建一个数组 ,一般地根据初始化设定简单分为 3 种 :1. 单纯创建数组 :var arr=new Array();要点用new关键字创建数组对象Array(),Array(对象是一个本地 类,可以用new创建一个对象后使用2. 创建数组的同时规定数组大小 :var arr=new Array(10);这里就创建了一个初始化大小为10的数组注意 :当使用数组大小操作初始化大小时 ,数组

2、会自动被撑大 ,不会 像C语言那样发生错误动态增长是js数组的一个性质另外,js中支持最 大数组长度为 42949672953. 直接初始化 :var arr=new Array(love,hate,pain);/ 这里就直接初始化了数组 或 var arr=happy,cute,scare;/ 括号也可以声明一个数组对象当然,类似C语言可以定义2维3维和多维的数组,例如:var myArray = new Array();for(var i=0;i myArrayi=new Array();myArrayi0=Math.floor(Math.random()*10);myArrayi1=Ma

3、th.floor(Math.random()*10);myArrayi2=Math.floor(Math.random()*10);myArrayi3=Math.floor(Math.random()*10);myArrayi4=Math.floor(Math.random()*10);myArrayi5=Math.floor(Math.random()*10);myArrayi6=Math.floor(Math.random()*10);myArrayi7=Math.floor(Math.random()*10);myArrayi8=Math.floor(Math.random()*10);

4、myArray.sort( function(x, y) .return(x0=y0)?(x4=y4)?(x8-y8):(x4-y4):(x2-y2);for(var i=0;i document.write(myArrayi.join(,) + );数组的属性 :length arr.length 返回数组 arr 的长度 ,常见于循环中对数组的遍历 ,比如: for(var i=0;i 执行部分数组元素的访问 : arrindex, 其中 index 表示索引即数组基数 ,从 0开始,共有arr.length个元素.比如:arrO访问第一个数组元素,arr1访问 第二个数组元素 依次类推

5、数组的操作方法 :先概览下下面的这些操作数组常用的方法 (13个)toString(),valueOf(),toLocalString(),join(),split(),slice(),concat(), pop(),push(),shift(),unshift(),sort(),splice() 下面逐一分析这些方法的功能和用法 . toString(),valueOf(),toLocalString():功能:返回数组的全部元素 注:数组名也可以返回整个数组 代码:var m=am,bm,cm;/ 用括号声明一个数组对象 alert(m.toString();/toString() 返回数

6、组对象的所有内容 ,用逗号分 割,即 am,bm,cmalert(m.valueOf();/valueOf()也返回数组对象的所有内容 alert(m.toLocaleStri ng();/toLocaleStri ng()也返回数组对象的所有 内容,但有地区语言区别 ,暂不研究alert(m);/ 数组名也返回数组对象的所有内容join():功能:把数组各个项用某个字符 (串)连接起来 ,但并不修改原来的 数组代码:var m=am,bm,cm;/ 用括号声明一个数组对象var n=m.join(-);/ 用 -连接 am,bm,cm.alert(m.toString();/m 并没有被修改

7、 ,返回 am,bm,cmalert(n);/n 是一个字符串 ,为 am-bm-cmsplit():功能 :把一个字符串按某个字符 (串)分割成一个数组 ,但不修改原 字符串代码:var str=I love maomao,I am caolvchong;var arr=str.split(o);/ 按字符 o 把 str 字符串分割成一个数组 alert(arr);/ 输出整个数组slice():返回某个位置开始(到某个位置结束)的数组部分,不修改原 数组 代码 :var m=am,bm,cm,dm,em,fm;var n=m.slice(2);/ 返 回 第 二 个 元 素 bm 后 面

8、 的 元 素 , 即cm,dm,em,fmvar q=m.slice(2,5);返回第二个元素后到第五个元素,即cm,dm,emalert(n);alert(q);数组对象的栈操作push()数组末尾添加一个项pop():删除数组最后一个项代码:var m=am,bm,cm,dm,em,fm;m.push(gm);/ 在数组末尾添加元素 gm alert(m);m.pop();/ 删除数组最后一个元素 gmalert(m);数组对象的队列操作 :un shift():数组头添加一个项shift():删除数组第一个项代码:var m=am,bm,cm,dm,em,fm;m.unshift(gm)

9、;/ 在数组第一个元素位置添加元素 gm alert(m);m.shift();/ 删除数组第一个元素 gmalert(m);sort():数组按字符的ASCI码进行排序,修改数组对象注:即便是数字数组 ,也将转化为字符串来进行比较排序代码:var m=am,fm,gm,bm,em,dm;m.sort();/ 按字母序排序alert(m);concat():在数组尾添加元素,但不修改数组对象代码:var m=am,bmvar n=m.concat(cm);添加一项cm,并且赋予新数组对象alert(m);/ 原数组没有被修改alert(n);输出新数组对象splice():在数组的任意位置进行

10、添加,删除或者替换元素,直接修改 数组对象 细节 :splice()有三个参数或三个以上参数,前两个是必须的,后面参数是 可选的进行添加:splice(起始项,0,添加项)进行删除:splice(起始项要删除的项个数)进行替换:splice(起始项,替换个数,替换项)这个其实是添加删除 的共同结果 代码:var m=am,bmm.splice(1,0,fm,sm); 在第一项后面添加 fm 和 sm,返回 am,fm,sm,bmalert(m);m.splice(2,1);删除第二项后面一项(即第三项sm,返回 am,fm,bm)alert(m);m.splice(2,1,mm);/ 替 换

11、第二 项 后 面一项 (即 第 三项,返 回 am,fm,mm)alert(m);JavaScript数组操作函数join(delimiter): 把数组中各个元素使用分隔符 (delimiter) 拼成字符 串concat(array1, array2, .): 合并数组,对原数组不影响,只是返回 合并后的新数组pop(): 删除并返回最后一个元素push(element1, element2, .): 在数组末尾追加元素shift(): 删除并返回第一个元素unshift(element1, element2, .): 在数组开始位置添加元素 reverse(): 将数组元素顺序首尾反转s

12、ort(function): 给数组排序如果不给参数,默认按字符排序 (所有元素是数字也不会按数字排 序的)参数必须是一个函数,类似 function(a, b) ,在函数中判断 a, b 的大小,ab返回正数,a slice(start, end):返回一个新的数组,将 start开始,到end结束(不包括end)之间的元素复制到新数组中splice(start, count, replaceElement1, replaceElement2, .): 删除或者替换数组元素,从 start 开始,对 count 个元素进行删除或替换如果提供 replaceElement 参数则进行替换,否则

13、进行删除操作, 被替换的元素个数和 replaceElements 的个数不必相等返回一个数组,包含被删除或替换掉的元素 判断是否数组的方法var arrayVar = aaa, bbb, ccc;var nonArrayVar = length:4, otherAttribute:attr ; document.write(arrayVar.constructor=Array);document.write();document.write(nonArrayVar.constructor=Array);结果是 true, falsegrep、mapPerl语言带出来的东西,jQuery实现s

14、elector时用了这种方式 grep对数组的 grep 操作,指类似这样的代码 :Array newArray = grep(condition, oldArray,这个操作将对 oldArray 数组的每个元素进行遍历,如果当前处理元素符合条件 condition ,则 加入到返回数组中 jQuery中的grep类似这样:function( elems, callback), elems是DOM元素集合,callback是实现selector的一些表达式函数,如果callback返回true则表明当前处理的元素符合 selector表达式篇二:javaScript基础之数组javaScri

15、pt基础之数组目录创建数组的方法 3数组的内置方法 3数组首尾位置的数据项添加及删除方法 3array.push( value,)-向数组的尾部添加值 4array.unshift( value, ) - 在数组头部插入一个元素 4array.pop( ) - 删除并返回数组的最后一个元素 5array.shift( )- 将 元 素 移 出 数组6重排序方法 6array.reverse() - 颠 倒 数 组 中 元 素 的 顺序 7array.sort( fn )对数组元素进行排序 7数组的固定位置的增删改方法 8array.splice(start,deleteCount,value,

16、-插入、删除或替换数组的元素 8可以复制数组的方法 8array.slice(start,end) - 返 回 数 组 的 一 部分 9array.c on cat(value ,)- 连 接 数组 9将 数 组 转 化 为 字 符 串 的 方法 10array.join(separator) -将数组元素连接起来以构建一个字符串 10array.toString() - 将 数 组 转 换 成 一 个 字 符串 11array.toLocaleString() - 把 数 组 转 换 成 局 部 字 符串 11数 组的属 性 :length12ECMAScript 5 添 加 的 数 组 方

17、法 12位置方法 12迭 代 方 法 - 不 修 改 原 数组 13归并方法 - 迭代数组所有项,然后构建一个最终返回的值 13数组是复合数据类型 (对象类型)的数据,它的数据索引为数字, 从 0 开始,逐一递增,有个 length 属性,代表数组项的总数。数组的 每一项可以存任何类型的数据, 并不是数组就只可以存 Number 类型的 数据哦。当我们用 for in 语句 遍历数组的时候, length 属性并不会被遍历 出来。创建数组的方法 var arr = new Array( ); /创建一个空数组var arr = new Array(size); / size数组的长度,ex.s

18、ize=3创建一个有3 个元素的数组 ,元素为 undefinedvar arr = new Array(element0, element1, ., elementn); / 用参数 指定的值初始化数组,以逗号分隔var arr = ; / 直接量的方式创建一个空数组,和第一个创建数组的方法同效 var arr = element0, element1, ., elementn; / 直接量的方式创建 数组,同上面第三个创建方式数组的内置方法数组首尾位置的数据项添加及删除方法array.push()array.pop()array.unshift()array.shift()/ 添加的都返回

19、数组的 length 属性值/ 删除的都返回删除项的值array.push( value,-向数组的尾部添加值参数:value可以是 一个或多个(不传参数好像也没报错)功能:方法push()将把它的参数顺次添加到array的尾部。 返回值:把指定的值添加到数组后的新长度。是否修改原数组:是!-它直接修改array而不是创建一个新的 数组。扩展:方法push()和方法pop()用数组提供先进后出栈的功能。Bug:在JavaScript的Netscape实现中,如果把语言版本明确地设置为 1.2,该函数将返回最后添加的值,而不是返回新数组的长度。array.unshift( value, - 在数

20、组) 头部插入一个元素 参数: value 是要插入到数组头部的一个或多个值(不传参数好 像也没报错)功能:方法unshift()将把它的参数插入array的头部,并将已经存 在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个 参数将成为数组新的元素 0,如果还有第二个参数, 它将成为新的元素 1,以此类推。返回值:把指定的值添加到数组后的新长度。是否修改原数组:是! -unshift()直接修改原有的数组,而不是创建一个新的数组。 示例:var a = ; / a:a.unshift(1); / a:1 返回 1a.unshift(22); / a:22,1 返回 2a.unshi

21、ft(33,4,5); / a:33,4,5,22,1 返回 4a.push(6); / a:33,4,5,22,1,6 返回 5array.pop( ) - 删除并返回数组的最后一个元素 参数:无功能:方法pop()将删除array的最后一个元素,把数组长度减1, 如果数组已经为空,则pop()不改变数组。返回值:返回它删除的元素的值。数组已经为空的时候, pop() 方法返回 undefined。是否修改原数组:是!-它直接修改 array。扩展:方法push()和方法pop()用数组提供先进后出栈的功能。示例:var stack = ; / 栈: stack.push(1, 2); /

22、栈 : 1,2 返回 2stack.pop(); / 栈 : 1 返回 2stack.push(4,5); / 栈 : 1,4,5 返回 2stack.pop() / 栈: 1 返回 4,5篇三:JavaScript数组定义JavaScript数 组定义数组有四种定义的方式 使用构造函数: var a = new Array();var b = new Array(8);var c = new Array(first, second, third); 或者数组直接量:var d = first, second, third;属性Array 只有一个属性,就是 length,length 表示的

23、是数组所占内存 空间的数目,而不仅仅是数组中元素的个数,在刚才定义的数组中, b.length 的值为 8var a = new Array(first, second, third)a48 = 12document.write(a.length)/ 显示的结果是 49我们var a =数组的 length 属性是可写的,这是一个非常有意思的属性,可以通过这种方法来截取数组var a = new Array(first, second, third)delete a1document.write(a.length)/ 显示的结果是 3,说明即使删除也无法改变数组的长度 new Array(fi

24、rst, second, third)a.length = 1document.write(a.length)/ 显示的结果是 1,说明只剩下一个元素了方法这里并没有包括IE和FF并不兼容的一些方法:toString():把数组转换成一个字符串toLocaleString():把数组转换成一个字符串join():把数组转换成一个用符号连接的字符串shift():将数组头部的一个元素移出un shift():在数组的头部插入一个元素pop():从数组尾部删除一个元素push():把一个元素添加到数组的尾部con cat():给数组添加元素slice():返回数组的部分reverse将数组反向排序

25、sort():对数组进行排序操作splice():插入、删除或者替换一个数组元素toString()方法,toLocaleString()方法的作用类似,FF下的作用是 完全相同的, IE 的话如果元素是字符串,会在 “后,”面加上一个空格, 如果元素是数字,会扩展到两位小数,两者都会改变字符串的 length 属性,所以考虑到兼容性,尽量不要使用toLocaleStri ng(方法。var a = new Array(1, 2, 3, 4, 5, 6, 7)var b = a.toStri ng() b 为字符串形式的 1,2, 3, 4, 5, 6, 7var c = new Array(

26、1, 2, 3, 4, 5, 6, 7)var d = c.toLocaleString() /d 为字符串形式的 1, 2, 3, 4, 5, 6, 7/toString()方法和toLocaleString()方法都可以拆解多维数组join()方法将数组中的所有元素转换成字符串, 然后连接起来,这 刚好和String的split()方法是一个相反的操作。join()默认是使用“作为 分隔符,当然你也可以在方法中指定分隔符var a = new Array(first, second, third)var s = a.join(.)document.write(s)/ 显示的结果是 “ fi

27、rst.second.third”pop()方法可以从数组尾部删除若干个元素,push()方法把一个元 素添加到数组的尾部,这两个方法刚好是两个相反的操作。两个都是 对原来的数组进行操作,但是要注意push()方法返回的是新的数组的长 度,而pop()方法则返回被删去的那个元素。var a = new Array(1, 2, 3)var b = a.push(4,5,6,7) a 为1,2, 3, 4, 5, 6, 7b 为 6 注意 push()方法不会帮你打开一个数组var c = new Array(1, 2, 3, 4, first)var d = c.pop() c为1,2, 3,

28、4d 为字符串形式的firstshift()方法可以从数组头部删除一个元素,un shift()方法把若干元 素添加到数组的头部,这两个方法刚好是两个相反的操作。两个都是 对原来的数组进行操作,但是要注意unshift()方法返回的是新的数组的长度,而shift()方法则返回被删去的那个元素var a = new Array(1, 2, 3)var b = a.unshift(4,5,6,7) /a 为4, 5, 6, 7, 1, 2, 3b 为 6 注意 un shift()方法不会帮你打开一个数组,还有就是被插入数值的顺序var c = new Array(first, 1, 2, 3,

29、4)var d = c.shift() c 为1,2, 3, 4d 为字符串形式的firstcon cat()方法可以返回一个在原有数组上增添了元素的数组,元素用“分, ”隔,元素中如果有数组,将被展开并继续添加,但不支持多维数组形式的展开添加var a = new Array(first, second, third)s = a.concat(fourth,fifth, sixth,seventh, eighth, ninth)document.write(s7)/显示的结果是“ eighth, ninth,说明“ eighth, ninth是以数组的形 式被添加了进去,此是 s的值为fir

30、st, second, third, fourth, fifth, sixth, seventh, eighth, ninthslice()方法返回数组的一个片断,或者说是子数组。slice()的参数表示字数组的始末位置,如果只有一个参数,就表示从该处开始一直取到最后,如果参数出现负数,则表示倒数的某个位置var a =new Array(1, 2, 3, 4, 5)var b =a.slice(3)/b 为4, 5var c =a.slice(-3) c 为3, 4, 5var d =a.slice(1,-1) /d 为2, 3, 4var e =a.slice(-3,-1) /e 为3, 4reverse(方法将数组反向排序,他并不创建和返回一个新的数组,而是在原有的数组上进行操作var a = new Array(first, second, third)a.reverse() document.write(a)/显示的结果是“ third,secondfirst,这时候数组的顺序已经颠倒 了sort()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论