JavaScript:数组

时间:2020-07-21 14:06:07   收藏:0   阅读:89

1、创建数组

// 推荐使用
var arr = [1, ,2 ,3];

// 不推荐使用
var arr = new Array(1, 2);

2、数组的本质

本质上,数组属于一种特殊的对象。

typeof[1, 2, 3] // "Object"

数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...)。

var arr = [1, 2, 3];

Object.keys(arr) // ?["0", "1", "2"]

3、数组的遍历

var arr = [1, 2, 3];
a.foo = true;

// for...in
for (var i in arr) {
    console.log(arr[i]); // 1 2 3 true
}

// for循环
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]); // 1 2 3
}

// while循环
var i = 0; 
while(i < a.length) {
    console.log(arr[i]); // 1 2 3
    i++;
}

// forEach
arr.forEach(function (i) {
    console.log(i); // 1 2 3
});

使用for...in不仅会遍历数组所有的数字键,还会遍历非数字键。所以,不推荐使用for...in遍历数组。

4、类似数组的对象

如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,语法上称为“类似数组的对象”(array-like object)。

5、构造函数

// 无参数时,返回一个空数组
new Array() // []

// 单个正整数参数,表示返回的新数组的长度
new Array(1) // [ empty ]
new Array(2) // [ empty x 2 ]

// 非正整数的数值作为参数,会报错
new Array(3.2) // RangeError: Invalid array length
new Array(-3) // RangeError: Invalid array length

// 单个非数值(比如字符串、布尔值、对象等)作为参数,
// 则该参数是返回的新数组的成员
new Array(‘abc‘) // [‘abc‘]
new Array([1]) // [Array[1]]

// 多参数时,所有参数都是返回的新数组的成员
new Array(1, 2) // [1, 2]
new Array(‘a‘, ‘b‘, ‘c‘) // [‘a‘, ‘b‘, ‘c‘]

注意,如果参数是一个正整数,返回数组的成员都是空位。虽然读取的时候返回undefined,但实际上该位置没有任何值。虽然这时可以读取到length属性,但是取不到键名。

var a = new Array(3);
var b = [undefined, undefined, undefined];

a.length // 3
b.length // 3

a[0] // undefined
b[0] // undefined

0 in a // false
0 in b // true

6、方法

7、参考资料

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!