初识Array:
Array 对象用于在单个的变量中存储多个值
定义:
方式1
//返回的数组为空,length字段为0 var 变量名=new Array(); //size是期望的数组元素个数,返回的length字段将被设置为size的值--返回具有指定个数,元素为undefined的数组 var 变量名=new Array(size); //新创建的数组的元素就会被初始化为这些值,它的length字段也会被设置为参数的个数 var 变量名=new Array(元素列表); //不使用new运算符直接调用构造函数,该效果和使用new运算符相同 var array=Array();
举例:
<script> var array=new Array(1,2,3); alert(array); </script>
显示如下:
方式2
var 变量名=[元素列表];
举例:
<script> var array=[1,2,3]; alert(array); </script>
显示如下:
访问:
arr[索引]=值; arr[0]=1;
举例:
<script> var array=[1,2,3]; //将数组的最后一个元素修改为99 array[2]=99; alert(array); </script>
显示如下:
注意:JS数组与Java中的数组可不相同哦,它类似于java集合,长度,类型都可变
Array数组的特点:
变长:
即为长度可发生变化
,在java中数组是定长的,一旦我们访问的下标超出范围,即会报错,但在JavaScript中,我们是可以访问任意下标的元素值
举例:
设置值的情况
<script> var array=[1,2,3]; //将数组中下标为10的元素的值设置为16 array[10]=16; alert(array[10]); </script>
显示如下:
未设置值的情况
<script> var array=[1,2,3]; //直接访问下标为8的元素的值 alert(array[8]); </script>
显示如下:
变类型:
举例:
<script> var array=[1,2,3]; //将array数组下标为8的值设置为字符串类型 array[8]="hello"; alert(array[8]); </script>
显示如下:
查看此时数组的值:
alert(array);
显示如下:
Array对象属性:
Array对象属性:
属性 | 描述 |
length | 设置或返回数组中元素的数目 |
constructor | 返回对创建此对象的数组函数的引用 |
prototype | 使其有能力向对象添加属性和方法 |
length举例:
打开该网页依次弹出1,2,3
<script> var array=[1,2,3]; for(let i=0;i<array.length;i++){ alert(array[i]); } </script>
constructor举例:
constructor属性用于返回创建该对象的构造函数
在JavaScript中,每个具有原型的对象都会自动获得constructor属性,除了arguments、Enumerator、Error、Global、Math、RegExp、Regular Expression等一些特殊对象之外,其他所有的JavaScript内置对象都具备constructor属性,例如:Array、Boolean、Date、Function、Number、Object、String等
举例:
<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>
显示如下:
<script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee(); document.write(bill.constructor); </script>
显示如下:
Array对象方法:
方法 | 描述 |
concat() | 连接两个或更多的数组,并返回结果 |
join() | 把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔 |
pop() | 删除并返回数组的最后一个元素 |
push() | 向数组的末尾添加一个或更多的元素,并返回新的长度 |
shift() | 删除并返回数组的第一个元素 |
splice() | 删除元素,并向数组添加新元素 |
toSource() | 返回该对象的源代码 |
toString() | 把数组转换为字符串,并返回结果 |
toLocaleString() | 把数组转换为本地数组,并返回结果 |
unshift() | 向数组的开头添加一个或更多元素,,并返回新的长度 |
valueOf() | 返回数组对象的原始值 |
方法的举例:
concat:
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,其参数可以是具体的值,也可以是数组对象,可以是任意多个,多个之间用逗号隔开
<script type="text/javascript"> var str="hello" var str1="sri" alert(str.concat(str1)) </script>
显示如下:
该数组是通过把所有 参数添加到 str 中生成的,如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组
join:
可选参数,指定要使用的分隔符,如果省略该参数,则使用逗号作为分隔符,该字符串是通过把 str 的每个元素转换为字符串,再把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" //使用"-"分隔 document.write(str.join("-")) </script>
pop:
pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值,如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" //删除str的最后一个元素并将其输出 document.write(str.pop()); document.write("<br />"); //输出最新的str document.write(str); </script>
显示如下:
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" //使用for循环依次删除数组中的元素 for(let i=0;i<3;i++){//注意:这里for循环的条件不能写成i<str.length,因为str.length的值是不断缩小的 document.write(str.pop()); } document.write("<br>");//换行 document.write("---------"); document.write("<br>"); document.write(str.pop()); </script>
显示如下:
push:
push() 方法可把它的参数顺序添加到 str 的尾部,它直接修改 str,而不是创建一个新的数组,push() 方法和 pop() 方法使用数组提供的先进后出栈的功能,该方法会改变数组的长度
提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" document.write("添加前:"); document.write(str); document.write("<br>"); document.write(str.push("hi")); document.write("<br>"); document.write("添加后:"); document.write(str); </script>
显示如下:
reverse:
该方法会改变原来的数组,而不会创建新的数组
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" document.write(str); document.write("<br>"); document.write(str.reverse()); </script>
显示如下:
shift:
如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值,该方法不创建新数组
,而是直接修改原有的 str,该方法会改变数组的长度
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" document.write(str.shift()); document.write("<br>"); document.write(str); </script>
slice:
str.slice(start,end)
start:必需,规定从何处开始选取
如果是负数,那么它规定从数组尾部开始算起的位置,也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推
end:可选,规定从何处结束选取
该参数是数组片断结束处的数组下标,如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素,如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素
最终产生一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()
<script type="text/javascript"> var str=new Array(3) str[0]="sri" str[1]="good" str[2]="hello" document.write(str); document.write("<br>"); document.write(str.slice(1)); document.write("<br>"); document.write(str); </script>
显示如下:
toSource:
表示对象的源代码,该原始值由 Array 对象派生的所有对象继承
toSource() 方法通常由 JavaScript 在后台自动调用
,并不显式地出现在代码中
<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.toSource()); </script>
只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法
toString:
当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串但是在某些情况下
,需要显式地调用该方法,数组中的元素之间用逗号分隔
<script type="text/javascript"> var array=new Array(); array[0]="hello"; array[1]="hi"; array[2]="siri"; document.write(array.toString()); </script>
显示如下:
unshift:将会返回新数组的长度
unshift() 方法将把它的参数插入 原数组 的头部
,并将已经存在的元素顺次地移到较高的下标处,以便留出空间
该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推…
请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组,因此该方法会改变数组的长度
注:unshift() 方法无法在 Internet Explorer 中正确地工作!
<script type="text/javascript"> var array=new Array(); array[0]="hello"; array[1]="hi"; array[2]="siri"; document.write(array.unshift("jon")); document.write("<br>"); document.write(array); </script>
显示如下:
valueOf() :
方法返回 Array 对象的原始值,该原始值由 Array 对象派生的所有对象继承,valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中