javascript中的数组是动态的,即长度是可以发生变化的。
- 创建数组对象
创建一个数组对象
创建数组对象的3种方式:
1. new Array() 创建长度是0的数组
2. new Array(5); 创建长度是5的数组,,但是其每一个元素都是undefine
3. new Array(3,1,4,1,5,9,2,6); 根据参数创建数组
<script> function p(s,v){ document.write(s+' '+v); document.write("<br>"); } var x = new Array(); //创建长度是0的数组 p('通过 new Array()创建一个空数组:',x); x = new Array(5); //创建长度是5的数组,,但是其每一个元素都是undefine p('通过 new Array(5)创建一个长度是5的数组:',x); p('像new Array(5) 这样没有赋初值的方式创建的数组,每个元素的值都是:',x[0]); x = new Array(3,1,4,1,5,9,2,6); //根据参数创建数组 p('创建有初值的数组new Array(3,1,4,1,5,9,2,6) :',x); </script>
- 数组长度
属性length 获取一个数组的长度
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4,1,5,9,2,6); //根据参数创建数组 p('当前数组是:'+x); p('通过.length获取当前数组的长度:'+x.length); </script>
- 遍历一个数组
遍历有两种方式
1.结合for循环,通过下标遍历
2.使用增强for in循环遍历
需要注意的是,在增强for in中,i是下标的意思。
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4); p('当前数组是:'+x); p("使用普通的for循环遍历数组"); for(i=0;i<x.length;i++){ //普通for循环 p(x[i]); } p("使用增强for循环遍历数组"); for(i in x){ //for in 循环 p(x[i]); } </script>
- 连接数组
方法 concat 连接两个数组
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4); var y = new Array(1,5,9,2,6); p('数组x是:'+x); p('数组y是:'+y); var z = x.concat(y); p('使用concat连接数组x和y'); p('数组z是:'+z); </script>
- 通过指定分隔符,返回一个数组的字符串表达
方法 join 通过指定分隔符,返回一个数组的字符串表达
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4); p('数组x是:'+x); var y = x.join(); p('y = x.join() 得到的是数组x的字符串表达,其值是'+y+" 其类型是 :" +(typeof y)); var z = x.join("@"); p('z = x.join("@");是x的字符串表达,不过分隔符不是默认的"," 而是"@" : '+z); </script>
- 分别在最后的位置插入数据和获取数据(获取后删除)
方法 push pop,分别在最后的位置插入数据和获取数据(获取后删除)
就像先入后出的栈一样
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4); p('数组x是:'+x); x.push(5); p('向x中push 5,得到 ' + x); var e = x.pop(); p('从x中pop一个值出来,其值是 ' + e); p('pop之后,x数组的值是:'+x); </script>
- 分别在最开始的位置插入数据和获取数据(获取后删除)
方法 unshift shift ,分别在最开始的位置插入数据和获取数据(获取后删除)
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4); p('数组x是:'+x); x.unshift (5); p('对数组 unshift 值5(在最前面加),数组变为:' + x); var e = x.shift (); p('从数组中 shift 一个数(从最前面取),其值是:' + e); p('shift之后,数组变为:' + x); </script>
- 对数组的内容进行排序
方法 sort对数组的内容进行排序
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4,1,5,9,2,6); p('数组x是:'+x); x.sort(); p('使用sort排序后的数组x是:'+x); </script>
- 自定义排序算法
sort()默认采用正排序,即小的数排在前面。 如果需要采用自定义排序的算法,就把比较器函数作为参数传递给sort()。
比较器函数:
function comparator(v1,v2){
return v2-v1; //v2-v1表示大的放前面,小的放后面
}
调用sort函数的时候,把这个比较器函数comparator作为参数传递进去即可
x.sort(comparator);
<script> function p(s){ document.write(s); document.write("<br>"); } function comparator(v1,v2){ return v2-v1; } var x = new Array(3,1,4,1,5,9,2,6); p('数组x是:'+x); x.sort(comparator); p('使用sort 进行自定义倒排序后的数组x是:'+x); </script>
- 对数组的内容进行反转
方法 reverse,对数组的内容进行反转
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4,1,5,9,2,6); p('数组x是:'+x); x.reverse(); p('使用reverse()函数进行反转后的值是:'+x); </script>
- 获取子数组
方法 slice 获取子数组
注意: 第二个参数取不到
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4,1,5,9,2,6); p('数组x是:'+x); var y = x.slice(1); p('x.slice(1)获取的子数组是:'+y); var z = x.slice(1,3); p('x.slice(1,3)获取的子数组是:'+z); p('第二个参数取不到'); </script>
- 删除和插入元素
方法 splice (不是 slice) 用于删除数组中的元素
奇葩的是 ,它还能用于向数组中插入元素
<script> function p(s){ document.write(s); document.write("<br>"); } var x = new Array(3,1,4,1,5,9,2,6); p('数组x是:'+x); x.splice (3,2);//从位置3开始 ,删除2个元素 p('x.splice (3,2) 表示从位置3开始 ,删除2个元素:'+x); x.splice(3,0,1,5); p('x.splice(3,0,1,5) 从位置3开始,删除0个元素,但是插入1和5,最后得到:'+x); </script>