js 数组元素与数组长度

创建数组

在 js 中我们可以用如下的方法创建数组

1
2
3
4
5
var arr1 = [1,2]

var arr2 = new Array(3) // [empty*3]

var arr3 = new Array(1,2) // [1,2]

第一种是我们常用的一种创建数组的方法

第二种则会生成一个length为3的数组对象,我们访问 arr2[0] 返回的是 undefined

这里我们需要注意一点的是,arr2 不会初始化 arr2[0],arr2[1],arr[2],这句话是什么意思呢,看看下面这个例子你就明白了。

1
2
3
4
5
6
7
8
9
10

var arr = new Array(3)

var arr2 = [undefined,undefined,undefined]

console.log(0 in arr); // false
console.log(0 in arr2); // true

// 和 new Arry(3) 效果是一样的,注意这里是四个逗号
var arr3 = [,,,,]

修改数组

通常我们在修改数组的时候都是这样子修改

1
2
3
4
5

var arr = [];
arr[0] = 1;
arr.push(2);
console.log(arr);[1,2]

我们还可以这样操作

1
2
3
4
5

var arr = [1,2,3];
arr[10] = 10;

console.log(arr);//  [1, 2, 3, empty × 7, 10]

这里会导致和new Array(10)的结果有点类似

1
2

console.log(3 in arr); // false

arr[10] = 10 虽然会让数组的长度增加,但实际上却未真正的增加了数组的元素。

数组的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14

var arr = [1,3]

// 输出 0,1
for (let key in arr.keys()){
console.log(key);
}

var arr = new Array(3)

// 啥都没输出
for (let key in arr.keys()){
console.log(key);
}
1
2
3
4
5

var arr = [1,2,3,undefined,,]
console.log(arr.filter(function(value){
return true
}));// [1,2,3,undefined]