JavaScript中的Array对象~

简介: JavaScript中的Array对象~

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

相关文章
|
1月前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
1月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
26天前
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
18 1
JavaScript中对象的数据拷贝
|
1月前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
2月前
|
存储 JavaScript 前端开发
JavaScript Array
【10月更文挑战第06天】
37 15
|
2月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
42 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
47 1
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
21 2
|
1月前
|
JavaScript 前端开发 开发者
|
2月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
33 2