JavaScript数组队尾添加元素的方法

往数组末尾添加元素的方式通常是采用数组的 push 方法,如:

1
2
3
var array = [1, 2, 3];
array.push(4);
console.log(array); // [1, 2, 3, 4]

underscore.js 中采用的另一种小技巧:

1
2
var array = [1, 2, 3];
array[array.length] = 4;

JavaScript 数组是从 0 开始索引,所以数组中最后一个元素的索引值就是 数组的长度 - 1。往数组末尾添加元素可对 数组最后一个元素 + 1 索引的位置进行赋值,也就是对 array[array.length] 进行赋值。

需要注意的是,在循环往数组中添加元素的时候应采用 array.length,而非将 array.length 存储在局部变量中:

1
2
3
4
5
6
7
8
9
10
// 循环添加元素时,将array.length存储在变量(len)中
// 并通过array(len)添加元素时将出现非预期的行为
var array = [1, 2, 3];
var l = array.length;
for (var i = 0; i <= l; i++) {
array[l] = i;
}
console.log(array); // [1, 2, 3, 3]

我们的预期结果是 [1, 2, 3, 0, 1, 2, 3]

1
2
3
4
5
6
7
8
var array = [1, 2, 3];
var l = array.length;
for (var i = 0; i <= l; i++) {
array[array.length] = i;
}
console.log(array); // [1, 2, 3, 0, 1, 2, 3]
0%