使用
Array.prototype.push
方法将值附加到数组末尾:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
您可以使用
push()
函数在一次调用中将多个值附加到数组:
// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];
// append multiple values to the array
arr.push("Salut", "Hey");
// display all values
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
请注意,
push()
方法返回更新后的数组长度。
更新
如果要将一个数组的项目添加到另一个数组,可以使用
firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
// Do not forget to assign the result as, unlike push, concat does not change the existing array
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
更新
如果您想要将任何值添加到数组的开头(即第一个索引),那么您可以使用
Array.prototype.unshift
来实现此目的。
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
它还支持像
push
一样一次附加多个值。
更新
使用 ES6 语法的另一种方法是返回一个带有 spread 语法 。这不会改变原始数组,但会返回一个新数组,其中会追加或添加新项,这符合函数式编程的精神。
const arr = [
"Hi",
"Hello",
"Bonjour",
];
const newArr1 = [
...arr,
"Salut",
];
const newArr2 = [
"Salut",
...arr,
];
console.log(newArr1, newArr2);
如果您只附加一个变量,那么
push()
就可以了。如果您需要附加另一个数组,请使用
concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
除非重新分配,否则 concat 不会影响
ar1
和
ar2
,例如:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
JavaScript 参考 上有很多很棒的信息。
一些快速基准测试(每次测试 = 500k 个附加元素,结果是多次运行的平均值)显示以下内容:
Firefox 3.6(Mac):
-
小数组:
arr[arr.length] = b
更快 (300ms vs. 800ms) -
大数组:
arr.push(b)
更快 (500ms vs. 900ms)
Safari 5.0(Mac):
-
小数组:
arr[arr.length] = b
更快 (90ms vs. 115ms) -
大数组:
arr[arr.length] = b
更快 (160ms vs. 185ms)
Google Chrome 6.0(Mac):
- 小数组: 无明显差异 (Chrome 速度很快!仅约 38ms!!)
- 大数组: 无明显差异 (160ms)
我更喜欢
arr.push()
语法,但我认为使用
arr[arr.length]
版本会更好,至少在原始速度方面。不过我很想看看 IE 运行的结果。
我的基准测试循环:
function arrpush_small() {
var arr1 = [];
for (a = 0; a < 100; a++)
{
arr1 = [];
for (i = 0; i < 5000; i++)
{
arr1.push('elem' + i);
}
}
}
function arrlen_small() {
var arr2 = [];
for (b = 0; b < 100; b++)
{
arr2 = [];
for (j = 0; j < 5000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
}
function arrpush_large() {
var arr1 = [];
for (i = 0; i < 500000; i++)
{
arr1.push('elem' + i);
}
}
function arrlen_large() {
var arr2 = [];
for (j = 0; j < 500000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}