探索与发现

研究java技术

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  83 随笔 :: 0 文章 :: 109 评论 :: 0 Trackbacks

本文介绍如下几个方面的内容:

1.如何创建数组

2.如何对数组进行操作(添加,删除,读取)

3.数组常见方法和属性

如何创建一个数组,一般地根据初始化设定简单分为3种:

1.单纯创建数组:

var arr=new Array();

要点:用new关键字创建数组对象Array(),Array()对象是一个本地类,可以用new创建一个对象后使用

2.创建数组的同时规定数组大小:

var arr=new Array(10);//这里就创建了一个初始化大小为10的数组

注意:当使用数组大小操作初始化大小时,数组会自动被撑大,不会像C语言那样发生错误.动态增长是js数组的一个性质.另外,js中支持最大数组长度为

4294967295

3.直接初始化:

var arr=new Array("love","hate","pain");//这里就直接初始化了数组

或var arr=["happy","cute","scare"];//括号也可以声明一个数组对象

当然,类似C语言,可以定义2维3维和多维的数组,例如:

<script language=Javascript>

    var myArray = new Array();

    for(var i=0;i<10;i++ )...{

        myArray[i]=new Array();

        myArray[i][0]=Math.floor(Math.random()*10);

        myArray[i][1]=Math.floor(Math.random()*10);

        myArray[i][2]=Math.floor(Math.random()*10);

        myArray[i][3]=Math.floor(Math.random()*10);

        myArray[i][4]=Math.floor(Math.random()*10);

        myArray[i][5]=Math.floor(Math.random()*10);

        myArray[i][6]=Math.floor(Math.random()*10);

        myArray[i][7]=Math.floor(Math.random()*10);

        myArray[i][8]=Math.floor(Math.random()*10);

    }

   

    myArray.sort( function(x, y) ...{

        return (x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])

    });

    for(var i=0;i<myArray.length;i++ )...{

        document.write(myArray[i].join(",") + "<br/>");

    }

</script>

数组的属性:length

arr.length返回数组arr的长度,常见于循环中对数组的遍历,比如:

for(var i=0;i<arr.length;i++){

执行部分

}

数组元素的访问: arr[index],其中index表示索引即数组基数,从0开始,共有arr.length个元素.比如: arr[0]访问第一个数组元素,arr[1]访问第二个数组元素....依

次类推 数组的操作方法:先概览下下面的这些操作数组常用的方法(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()返回数组对象的所有内容,用逗号分割,即am,bm,cm

    alert(m.valueOf());//valueOf()也返回数组对象的所有内容

    alert(m.toLocaleString());//toLocaleString()也返回数组对象的所有内容,但有地区语言区别,暂不研究

    alert(m);//数组名也返回数组对象的所有内容

join():

功能:把数组各个项用某个字符(串)连接起来,但并不修改原来的数组

代码:

    var m=["am","bm","cm"];//用括号声明一个数组对象

    var n=m.join("---");//用---连接am,bm,cm.

    alert(m.toString());//m并没有被修改,返回am,bm,cm

    alert(n);//n是一个字符串,为am---bm---cm

split():

功能:把一个字符串按某个字符(串)分割成一个数组,但不修改原字符串

代码:

    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后面的元素,即cm,dm,em,fm

    var q=m.slice(2,5);//返回第二个元素后到第五个元素,即cm,dm,em

    alert(n);

    alert(q);

数组对象的栈操作:

push():数组末尾添加一个项

pop():删除数组最后一个项

代码:

    var m=["am","bm","cm","dm","em","fm"];

    m.push("gm");//在数组末尾添加元素gm

    alert(m);

    m.pop();//删除数组最后一个元素gm

    alert(m);

数组对象的队列操作:

unshift():数组头添加一个项

shift():删除数组第一个项

代码:

    var m=["am","bm","cm","dm","em","fm"];

    m.unshift("gm");//在数组第一个元素位置添加元素gm

    alert(m);

    m.shift();//删除数组第一个元素gm

    alert(m);

sort():数组按字符的ASCII码进行排序,修改数组对象

注:即便是数字数组,也将转化为字符串来进行比较排序

代码:

    var m=["am","fm","gm","bm","em","dm"];

    m.sort();//按字母序排序

    alert(m);

concat():在数组尾添加元素,但不修改数组对象

代码:

    var m=["am","bm"]

    var n=m.concat("cm");//添加一项cm,并且赋予新数组对象

    alert(m);//原数组没有被修改

    alert(n);//输出新数组对象

splice():在数组的任意位置进行添加,删除或者替换元素,直接修改数组对象

细节:

splice()有三个参数或三个以上参数,前两个是必须的,后面参数是可选的

进行添加:splice(起始项,0,添加项)

进行删除:splice(起始项,要删除的项个数)

进行替换:splice(起始项,替换个数,替换项) 这个其实是添加删除的共同结果

代码:

    var m=["am","bm"]

    m.splice(1,0,"fm","sm");//在第一项后面添加fm和sm,返回am,fm,sm,bm

    alert(m);

    m.splice(2,1);//删除第二项后面一项(即第三项sm,返回am,fm,bm)

    alert(m);

    m.splice(2,1,"mm");//替换第二项后面一项(即第三项,返回am,fm,mm)

    alert(m);





在有的教程上没有提到数组对象,都用自定义的数组,没提到的大概都是老版本了:

//定义一维数组
function MArray(len){
this.length = len;
for(i=1;i<=len;i++) this[i] = 0;
return this;
}
//创建数组
var strarray = new MArray(9)
//访问数组
for(aint in strarray) document.write(aint + ":" + strarray[aint] + "<br>");


//定义二维数组
function creatMArray(row,col){
var indx=0;
this.length=(row*10)+col
for(var x=1;x<=row;x++)
for(var y=1;y<=col;y++){
indx=(x*10)+y;
this[indx]="";
}
return this;
}
//创建二维数组
var xarr = new creatMArray(11,2)
//访问二维数组
for (x in xarr) document.write(x + ":" + xarr[x] + "<br>")
posted on 2009-05-14 08:18 蜘蛛 阅读(193) 评论(2)  编辑  收藏 所属分类: JavaScript

评论

# re: 数组 2009-05-14 08:25 蜘蛛
JavaScript类型检测小结(上)
http://lifesinger.org/blog/?p=1109  回复  更多评论
  

# re: 数组 2009-05-14 08:28 蜘蛛
javascript类型转换
http://blog.csdn.net/fireelement/archive/2007/06/03/1636247.aspx  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: