前面课程中简单介绍了JavaScript中的数组的使用,这一节中,我们来深入了解一下Array。
在JavaScript中,可以通过以下三种方式创建Array:
var arr = new Array(element0, element1, ..., elementN);
var arr = Array(element0, element1, ..., elementN);
var arr = [element0, element1, ..., elementN];
他们的运行结果都是一样的。创建了一个包含N个元素的数组对象。
单参数构造函数
使用多参创建Array时,上述三种形式结果都一样,非常清晰。
但是当使用单一参数创建Array,并且参数是一个整数时,上述三种方式的结果就不一样了。
我们通过下面的例子来理解一下:
var array1 = new Array(4) // 创建的array1,长度为4,里面所有元素均为null
var array2 = Array(4) // 创建的array2,长度为4,里面所有元素均为null
var array3 = [4] // 创建的array3不为空,长度为1,内容为[4]
console.log(JSON.stringify(array1))
console.log(JSON.stringify(array2))
console.log(JSON.stringify(array3))
上述代码使用单一整数参数,通过三种方式来创建了三人array对象。让我们看一下运行结果:
上图中,前两条是通过Array()函数创建的,最后一行是通过Array Literal创建的。所以区别很明显,使用Array()函数创建时,单整数参数指明的是长度;使用Array Literal创建时,单整数参数是惟一的元素。
Array.length特性
在JavaScript中,Array的下标从0开始,这意味着,如果直将一个元素添加到第N位索引,则0-(N-1)位元素将会默认创建,并且值为null。
我们通过下面例子来理解一下:
var array = []
array[4] = 8 // 直接将8放置在4号索引上
console.log(JSON.stringify(array)) // 输出array内容
上述代码,直接将8放置在4号位置上,将导致0-3号位元素被默认创建,值为null。看一下运行结果:
运行结果和我们预测的一致。
length的另一个特性是,length可以被用来移除尾部元素。length是一个可设置的值,当length被设置为比当前长度小的值的,尾部元素将会被移除。
我们通过一个例子来理解一下:
var array = [8,9,10,11]
console.log(JSON.stringify(array)) // 输出原始array
array.length=2
console.log(JSON.stringify(array)) // 输出更改length后的array
array的初始length为4,当将length设置为2后,尾部的两个元素将会被移除。我们看一下运行结果:
使用foreach方法遍历array
在前面的课程中,我们学习过使用for循环来遍历array。实际上Array类型自带了一个foreach方法,会更加方便。foreach语法如下:
array.foreach(function(item){
statement1
statement2
... ...
})
foreach的参数是一个匿名函数,foreach会调用这个匿名函数length次,按从0到length-1的次序,每次传入不同的元素给这个匿名函数。
我们通过一个例子理解一下:
var array = [8,9,10,11]
array.foreach(function(item){
console.log(item)
})
输出结果将会是:
8
9
10
11
OK,完结。
什么是TypedArray?
什么是WeakMap?