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

相关文章
|
7天前
|
Web App开发 JSON JavaScript
JavaScript对象常用操作JSON总结
JavaScript对象常用操作JSON总结
18 8
|
2天前
|
JavaScript Java 数据安全/隐私保护
js对象可扩展性和属性的四个特性(下)
js对象可扩展性和属性的四个特性(下)
|
3天前
|
JavaScript 前端开发 算法
虚拟DOM是React的关键技术,它是个轻量的JS对象树,模拟实际DOM结构。
【6月更文挑战第27天】虚拟DOM是React的关键技术,它是个轻量的JS对象树,模拟实际DOM结构。当状态改变,React不直接修改DOM,而是先构建新的虚拟DOM树。通过 diff 算法比较新旧树,找到最小变更,仅更新必要部分,提高性能,避免频繁DOM操作。虚拟DOM还支持跨平台应用,如React Native。它优化了更新流程,简化开发,并提升了用户体验。
10 1
|
5天前
|
存储 JavaScript 前端开发
JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)
【6月更文挑战第25天】JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)。
10 2
|
5天前
|
JavaScript 索引
Vue.js的`v-for`用于基于数组或对象渲染列表,如遍历数组生成`&lt;li&gt;`元素
【6月更文挑战第25天】Vue.js的`v-for`用于基于数组或对象渲染列表,如遍历数组生成`&lt;li&gt;`元素。基本语法是`v-for=&quot;(item, index) in items&quot;`,支持遍历对象的键值对。注意与`v-if`同用时应使用`&lt;template&gt;`,组件上使用`v-for`需设`key`属性以优化性能。
15 2
|
4天前
|
JavaScript 前端开发
技术经验分享:javaScript遍历对象、数组总结
技术经验分享:javaScript遍历对象、数组总结
技术经验分享:javaScript遍历对象、数组总结
|
9天前
|
存储 JavaScript 前端开发
第六篇-Javascript对象
第六篇-Javascript对象
11 2
|
14天前
|
存储 缓存 JavaScript
JavaScript内存泄漏通常发生在对象不再需要时
【6月更文挑战第16天】JavaScript内存泄漏常由闭包引起,当不再需要的对象仍被闭包引用时,垃圾回收机制无法清理。例如,创建返回大型对象引用的闭包函数会导致内存泄漏。避免泄漏需及时解除引用,清除事件监听器,利用WeakMap或WeakSet,以及定期清理缓存。使用性能分析工具监控内存使用也有助于检测和解决问题。
26 8
|
11天前
|
JavaScript 前端开发
JavaScript进阶-模板字符串与增强的对象字面量
【6月更文挑战第19天】ES6的模板字符串和增强对象字面量提高了JavaScript的易读性和效率。模板字符串(` `)支持变量嵌入和多行,简化了字符串处理;增强对象字面量允许简写属性与方法,以及动态属性名。注意模板字符串的闭合和性能影响,以及对象字面量的简写语法和计算属性名的恰当使用。通过实例展示了这两项特性的应用,助力编写更优雅的代码。