1.定义
有三种方式
(1) var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
(2) var myCars=new Array(3);
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
(3) var myCars=new Array("Saab","Volvo","BMW");
(虽然第二种方法指定了数组长度,实际上所有情况下数组都是变长的,也就是说即使指定了长度为3,仍可以将元素存储在规定长度以外)
2.查找
(1) document.write(myCars[0]); //指定数组名以及索引
(2) arrayObject.slice(start,end); //从已有数组中返回选定的元素,返回一个新数组(可以使用负值从数组的尾部选取元素;如果end未被指定,会选取从start到数组结尾的所有元素)
3.修改已有数组中的值
myCars[0]="Opel"; //指定下标添加一个新值
4.合并
arr1.concat(arr2); //concat() 连接两个或多个数组,并返回值
5.转成字符串
(1) arrayObject.join(separator); //把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔。
eg:arr.join(".");
输出结果:Saab.Volvo.BMW
(2) arrayObject.toString(); //数组转为字符串,元素之间用逗号分隔,并返回结果
(3) arrayObject.toLocaleString(); //把数组元素转换为本地字符串,然后使用地区特定的分隔符连接起来,形成一个字符串
(4) arrayObject.valueOf(); //返回数组对象的原始值,该原始值由Array对象派生的所有对象继承。该方法通常由JavaScript在后台自动调用,并不显式地出现在代码中。
(5) object.toSource(); //返回对象的源代码,该原始值由Array对象派生的所有对象继承。该方法通常由JavaScript在后台自动调用,并不显式地出现在代码中。(只有Gecko核心浏览器比如Firefox支持该方法,IE、Safari、Chrome、Opera等浏览器均不支持该方法)
6.排序
(1) arrayObject.sort(sortby); //sortby为可选,规定排序顺序,必须是函数(在原数组上进行排序,不生成副本)
1>文字排序
<script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") document.write(arr.sort()) </script>
输出结果:
George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas
2>数字排序
<script type="text/javascript"> function sortNumber(a, b) {//排序函数 return a - b //<0,返回一个小于0的值;=0,返回0;>0,返回一个大于0的值 } var arr = new Array(6) arr[0] = "10" arr[1] = "5" arr[2] = "40" arr[3] = "25" arr[4] = "1000" arr[5] = "1" document.write(arr + "<br />") document.write(arr.sort(sortNumber)) </script>
输出结果:
10,5,40,25,1000,1
1,5,10,25,40,1000
(2) arrayObject.reverse(); //颠倒数组中元素的顺序(不会创建新数组)
7.添加
(1) arrayObject.push(newelement1,newelement2,....,newelementX); //将指定的一个或多个元素添加到数组结尾,并返回数组新长度(它直接修改arrayObject,而不是创建一个新的数组)
(2) arrayObject.unshift(newelement1,newelement2,....,newelementX); //向数组的开头添加一个或多个元素,并返回新的长度(unshift()不创建新的数组,直接修改原有的数组,该方法无法在IE中正确地工作!)
(3) arrayObject.splice(index,howmany,item1,....,itemX); //删除从index处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素,返回含有被删除元素的数组(该方法会该改变原始数组;howmany如果设置为0,就不会删除项目)
8.删除
(1) arrayObject.pop(); //删除并返回最后一个元素,数组长度减1.如果数组已经为空,则pop()不改变数组,并返回undefined值。
(2) arrayObject.shift(); //删除并返回数组的第一个元素,如果数组是空,shift()不进行任何操作,返回undefined值。(该方法不创建新数组)
(3) arrayObject.splice(deletePos,deleteCount); //从指定位置开始删除指定元素,并返回所有删除的元素
9.判断数组中是否包含某一项
eg: var arr=[1,2,3];
arr.indexOf(1); //存在,返回0
arr.indexOf(5); //不存在,返回-1
10.删除数组中指定值的元素
/* 方法:Array.remove(dx) * 功能:删除数组元素. * 参数:dx删除元素的下标. * 返回:在原数组上修改数组 */ //经常用的是通过遍历,重构数组. Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=this[i] } } this.length-=1 } //在数组中获取指定值的元素索引 Array.prototype.getIndexByValue= function(value) { var index = -1; for (var i = 0; i < this.length; i++) { if (this[i] == value) { index = i; break; } } return index; } //使用举例 a = ['1','2','3','4','5']; var dx=a.getIndexByValue("2"); a.remove(dx); //删除下标为dx的元素
11.length属性
与其他大多数语言不同,Javascript数组的length属性是可变的。当length属性设置的比原来更大时,整个数组的状态事实上不会发生改变,仅仅是length属性变大;当length属性设置的比原来小时,原先数组中索引大于或等于length的元素的值全部丢失。
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "John"
arr[1] = "Andy"
arr[2] = "Wendy"
document.write("Original length: " + arr.length)
document.write("<br />")
arr.length=5
document.write("New length: " + arr.length)
document.write("<br />")
arr[15]="Jooanna.Yan"
document.write("last length: " + arr.length)
</script>
输出结果:
Original length: 3
New length: 5
last length: 16
12.prototype属性
object.prototype.name=value
使你有能力向对象添加属性和方法
<script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee("Bill Gates","Engineer",1985); employee.prototype.salary=null; bill.salary=20000; document.write(bill.salary); </script>
对于数组对象的应用,举例:给数组对象添加返回数组中最大元素值的方法。
<script type="text/javascript"> function array_max( ) { var i, max = this[0]; for (i = 1; i < this.length; i++) { if (max < this[i]) max = this[i]; } return max; } Array.prototype.max = array_max; var x = new Array(1, 2, 3, 4, 5, 6); var y = x.max(); document.write(y); </script>
13.constructor属性
object.constructor
返回创建对象的函数。
示例1:
<script type="text/javascript"> var test=new Array(); if (test.constructor==Array) { document.write("This is an Array"); } if (test.constructor==Boolean) { document.write("This is a Boolean"); } if (test.constructor==Date) { document.write("This is a Date"); } if (test.constructor==String) { document.write("This is a String"); } </script>
输出结果:
This is an Array
示例2:
<script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee("Bill Gates","Engineer",1985); document.write(bill.constructor); </script>
输出结果:
function employee(name, jobtitle, born)
{this.name = name; this.jobtitle = job; this.born = born;}
示例3:
constructor属性保存了对构造特定对象实例的韩式的引用
eg: x=new String("Hi");
if(x.constructor==String) //进行处理(条件为真)
或
function MyFunc{
//函数体
}y=new MyFunc;
if(y.constructor==MyFunc) //进行处理(条件为真)
作者:Joanna.Yan
出处:http://www.cnblogs.com/Joanna-Yan/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。