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

相关文章
|
11月前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
6月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
164 23
|
11月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
7月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
JavaScript 前端开发 Java
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find() 是 JavaScript 数组方法中一个非常实用和强大的工具。它不仅提供了简洁的查找操作,还具有性能上的独特优势:返回的引用能够直接影响原数组的数据内容,使得数据更新更加高效。通过各种场景的展示,我们可以看到 Array.find() 在更新、条件查找和嵌套结构查找等场景中的广泛应用。 在实际开发中,掌握 Array.find() 的特性和使用技巧,可以让代码更加简洁高效,特别是在需要直接修改原数据内容的情形。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
7月前
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
146 1
JavaScript中对象的数据拷贝

热门文章

最新文章