文档详情

详解JavaScript中数组的一些特殊用法.docx

发布:2025-06-10约9千字共17页下载文档
文本预览下载声明

详解JavaScript中数组的一些特殊用法

目录前言基本介绍数组类型和判断判断为数组的方式数组索引值和长度索引值是字符串索引值为小数、负数索引值是字符串等其他类型时索引与属性length属性数组的最大长度创建数组的三种方式数组字面量语法Array构造函数Array.of()空位(空元素)delete循环遍历空位数组空位的字符串输出in运算符总结

前言

数组是几乎所有编程语言的基础语法,JavaScript因为语法特性,之前缺少一些集合类对象,对数组的使用就会更多一些,因此我们更需要理解数组知识。

然而大部分人对数组都已经非常熟悉了,所以本文将不会介绍数组的基础语法和用法,而是从JavaScript中数组的一些特殊之处入手,通过这些少有特性的详细介绍,加深我们对数组的理解。

基本介绍

首先,作为开始,我们还是需要简单介绍下JavaScript中的数组,基本如下:

有序的数据集合,索引值从0开始递增拥有length长度属性数组元素值可以是JavaScript中的任何类型是动态的,可以增减元素可以循环数组元素,拥有一系列可操作的实例方法支持元素为数组的多维数组读取元素以数组名[索引值]的方式表示

以上就是对数组的基础介绍,大部分都很熟悉,接下来,我们就来看看数组的一些特殊之处,

数组类型和判断

在JavaScript中,是没有数组这种数据类型的,所以数组本质上是一种特殊的对象,它的类型值会返回object,如下所示:

typeof[]//object

由于返回的是object类型,就无法通过typeof语法判断一个值或对象是否是数组,得使用其他方式,才能正确的判断数组对象。

typeof的详细知识,可见博文typeof详解。

判断为数组的方式

判断一个对象是否为数组,有不少种方式,但我们一般使用较多也就两三种,而其中最正确有效的方式就两种。

正确判断方式

这两种正确有效判断数组类型的方式如下:

Array.isArray()ES6推出的语法,专门用于判断对象类型是否为数组,是则返回true,否则返回false,简单好用。Object.prototype.toString.call()在ES6推出之前的JS语法中,一般使用这种方式来判断数组,除了数组,它可以准确判断出其他几乎所有的JS数据类型。

Array.isArray([1,2,3])//true

Object.prototype.toString.call([])//[objectArray]

Object.prototype.toString.call({})//[objectObject]

以上代码,就是这两种有效方式的示例,都能准确有效的判断。

当前的前端开发种,ES6语法基本普及的情况下,使用Array.isArray()将更方便。

其他方式介绍

除以上两种以外,还有其他几种基于原型链上的判断方式,可用于判断数组,但这些方式都不够准确:

[]instanceofArray这里使用instanceof运算符表示给定值是否是数组的实例。[].constructor===Array给定值的实例构造函数是否是数组。Array.prototype.isPrototypeOf([])给定值的原型链上是否存在数组。Object.getPrototypeOf([])===Array.prototype给定值的原型对象是否等于数组的原型对象。

这几种方式本质上都比较类似,只不过由于原型链能够被修改,所以这几种方式并不推荐使用。

如使用instanceof判断的方式:

[]instanceofArray//true

[]instanceofObject//true

以上代码,使用instanceof运算符时,一个数组实例属于Array和Object,都是成立的,因为Object在Array的原型链上。

数组索引值和长度

数组通过下标索引值进行元素值的读取,必须要使用方括号才可以,否则无法读取元素值。

constarr=[1,2,3]

arr[1]//2

arr.1//UncaughtSyntaxError:Unexpectednumber

以上代码,使用arr.1的写法,就报了语法错误,因为JavaScript中单独数字作为标识符是不合法的。关于错误类型,可见博文js中的Error错误类型。

前面提到,数组是一种特殊的对象,而object对象,是可以通过键名来读取元

显示全部
相似文档