﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-探索与发现-随笔分类-JavaScript</title><link>http://www.blogjava.net/zhaijianhui/category/39563.html</link><description>研究java技术</description><language>zh-cn</language><lastBuildDate>Thu, 14 May 2009 02:09:19 GMT</lastBuildDate><pubDate>Thu, 14 May 2009 02:09:19 GMT</pubDate><ttl>60</ttl><item><title>数组</title><link>http://www.blogjava.net/zhaijianhui/archive/2009/05/14/270529.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Thu, 14 May 2009 00:18:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2009/05/14/270529.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/270529.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2009/05/14/270529.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/270529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/270529.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">本文介绍如下几个方面的内容:</p>
<p style="text-indent: 2em">1.如何创建数组</p>
<p style="text-indent: 2em">2.如何对数组进行操作（添加,删除,读取)</p>
<p style="text-indent: 2em">3.数组常见方法和属性</p>
<p style="text-indent: 2em">如何创建一个数组,一般地根据初始化设定简单分为3种:</p>
<p style="text-indent: 2em">1.单纯创建数组:</p>
<p style="text-indent: 2em">var arr=new Array();</p>
<p style="text-indent: 2em">要点:用new关键字创建数组对象Array(),Array()对象是一个本地类,可以用new创建一个对象后使用</p>
<p style="text-indent: 2em">2.创建数组的同时规定数组大小:</p>
<p style="text-indent: 2em">var arr=new Array(10);//这里就创建了一个初始化大小为10的数组</p>
<p style="text-indent: 2em">注意:当使用数组大小操作初始化大小时,数组会自动被撑大,不会像C语言那样发生错误.动态增长是js数组的一个性质.另外,js中支持最大数组长度为</p>
<p style="text-indent: 2em">4294967295</p>
<p style="text-indent: 2em">3.直接初始化:</p>
<p style="text-indent: 2em">var arr=new Array("love","hate","pain");//这里就直接初始化了数组</p>
<p style="text-indent: 2em">或var arr=["happy","cute","scare"];//括号也可以声明一个数组对象</p>
<p style="text-indent: 2em">当然,类似C语言,可以定义2维3维和多维的数组,例如:</p>
<p style="text-indent: 2em">&lt;script language=<a href="http://www.vipcn.com/InfoList/Catalog_251_1.html">Java</a>script&gt;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var myArray = new Array();</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;10;i++ )...{</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i]=new Array();</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][0]=Math.floor(Math.random()*10); </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][1]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][2]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][3]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][4]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][5]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][6]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][7]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myArray[i][8]=Math.floor(Math.random()*10);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; }</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; myArray.sort( function(x, y) ...{</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; });</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;myArray.length;i++ )...{</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.write(myArray[i].join(",") + "&lt;br/&gt;");</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; }</p>
<p style="text-indent: 2em">&lt;/script&gt;</p>
<p style="text-indent: 2em">数组的属性:length</p>
<p style="text-indent: 2em">arr.length返回数组arr的长度,常见于循环中对数组的遍历,比如:</p>
<p style="text-indent: 2em">for(var i=0;i&lt;arr.length;i++){</p>
<p style="text-indent: 2em">执行部分</p>
<p style="text-indent: 2em">}</p>
<p style="text-indent: 2em">数组元素的访问: arr[index],其中index表示索引即数组基数,从0开始,共有arr.length个元素.比如: arr[0]访问第一个数组元素,arr[1]访问第二个数组元素....依</p>
<p style="text-indent: 2em">次类推 数组的操作方法:先概览下下面的这些操作数组常用的方法(13个)</p>
<p style="text-indent: 2em">toString(),valueOf(),toLocalString(),join(),split(),slice(),concat(),</p>
<p style="text-indent: 2em">pop(),push(),shift(),unshift(),sort(),splice()</p>
<p style="text-indent: 2em">下面逐一分析这些方法的功能和用法.</p>
<p style="text-indent: 2em">toString(),valueOf(),toLocalString():</p>
<p style="text-indent: 2em">功能:返回数组的全部元素</p>
<p style="text-indent: 2em">注:数组名也可以返回整个数组</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm","cm"];//用括号声明一个数组对象</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m.toString());//toString()返回数组对象的所有内容,用逗号分割,即am,bm,cm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m.valueOf());//valueOf()也返回数组对象的所有内容</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m.toLocaleString());//toLocaleString()也返回数组对象的所有内容,但有地区语言区别,暂不研究</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);//数组名也返回数组对象的所有内容</p>
<p style="text-indent: 2em">join():</p>
<p style="text-indent: 2em">功能:把数组各个项用某个字符(串)连接起来,但并不修改原来的数组</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm","cm"];//用括号声明一个数组对象</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var n=m.join("---");//用---连接am,bm,cm.</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m.toString());//m并没有被修改,返回am,bm,cm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(n);//n是一个字符串,为am---bm---cm</p>
<p style="text-indent: 2em">split():</p>
<p style="text-indent: 2em">功能:把一个字符串按某个字符(串)分割成一个数组,但不修改原字符串</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var str="I love maomao,I am caolvchong";</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var arr=str.split("o");//按字符o把str字符串分割成一个数组</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(arr);//输出整个数组</p>
<p style="text-indent: 2em">slice():返回某个位置开始(到某个位置结束)的数组部分,不修改原数组</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm","cm","dm","em","fm"];</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var n=m.slice(2);//返回第二个元素bm后面的元素,即cm,dm,em,fm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var q=m.slice(2,5);//返回第二个元素后到第五个元素,即cm,dm,em</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(n);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(q);</p>
<p style="text-indent: 2em">数组对象的栈操作:</p>
<p style="text-indent: 2em">push():数组末尾添加一个项</p>
<p style="text-indent: 2em">pop():删除数组最后一个项</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm","cm","dm","em","fm"];</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.push("gm");//在数组末尾添加元素gm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.pop();//删除数组最后一个元素gm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">数组对象的队列操作:</p>
<p style="text-indent: 2em">unshift():数组头添加一个项</p>
<p style="text-indent: 2em">shift():删除数组第一个项</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm","cm","dm","em","fm"];</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.unshift("gm");//在数组第一个元素位置添加元素gm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.shift();//删除数组第一个元素gm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">sort():数组按字符的ASCII码进行排序,修改数组对象</p>
<p style="text-indent: 2em">注:即便是数字数组,也将转化为字符串来进行比较排序</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","fm","gm","bm","em","dm"];</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.sort();//按字母序排序</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">concat():在数组尾添加元素,但不修改数组对象</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm"]</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var n=m.concat("cm");//添加一项cm,并且赋予新数组对象</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);//原数组没有被修改</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(n);//输出新数组对象</p>
<p style="text-indent: 2em">splice():在数组的任意位置进行添加,删除或者替换元素,直接修改数组对象</p>
<p style="text-indent: 2em">细节:</p>
<p style="text-indent: 2em">splice()有三个参数或三个以上参数,前两个是必须的,后面参数是可选的</p>
<p style="text-indent: 2em">进行添加:splice(起始项,0,添加项)</p>
<p style="text-indent: 2em">进行删除:splice(起始项,要删除的项个数)</p>
<p style="text-indent: 2em">进行替换:splice(起始项,替换个数,替换项) 这个其实是添加删除的共同结果</p>
<p style="text-indent: 2em">代码:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; var m=["am","bm"]</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.splice(1,0,"fm","sm");//在第一项后面添加fm和sm,返回am,fm,sm,bm</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.splice(2,1);//删除第二项后面一项(即第三项sm,返回am,fm,bm)</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; m.splice(2,1,"mm");//替换第二项后面一项(即第三项,返回am,fm,mm)</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; alert(m);</p>
<br />
<br />
<br />
<br />
在有的教程上没有提到数组对象，都用自定义的数组，没提到的大概都是老版本了： <br />
<br />
//定义一维数组 <br />
function MArray(len){ <br />
this.length = len; <br />
for(i=1;i&lt;=len;i++) this[i] = 0; <br />
return this; <br />
} <br />
//创建数组 <br />
var strarray = new MArray(9) <br />
//访问数组 <br />
for(aint in strarray) document.write(aint + ":" + strarray[aint] + "&lt;br&gt;"); <br />
<br />
<br />
//定义二维数组 <br />
function creatMArray(row,col){ <br />
var indx=0; <br />
this.length=(row*10)+col <br />
for(var x=1;x&lt;=row;x++) <br />
for(var y=1;y&lt;=col;y++){ <br />
indx=(x*10)+y; <br />
this[indx]=""; <br />
} <br />
return this; <br />
} <br />
//创建二维数组 <br />
var xarr = new creatMArray(11,2) <br />
//访问二维数组 <br />
for (x in xarr) document.write(x + ":" + xarr[x] + "&lt;br&gt;") 
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/270529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2009-05-14 08:18 <a href="http://www.blogjava.net/zhaijianhui/archive/2009/05/14/270529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>