初识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 在后台自动调用,并不显式地出现在代码中