如何在JavaScript中将对象(如字符串或数字)附加到数组中?
如何在JavaScript中将对象(如字符串或数字)附加到数组中?
使用 push()
函数附加到数组:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
会打印
["Hi", "Hello", "Bonjour", "Hola"]
你可以使用 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]);
}
会打印
Hi
Hello
Bonjour
Hola
Salut
Hey
更新
如果要将一个数组的项添加到另一个数组,则可以使用 firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
会打印
["apple", "banana", "cherry", "dragonfruit", "elderberry", "fig"]
使用 push()
函数附加到数组:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
会打印
["Hi", "Hello", "Bonjour", "Hola"]
你可以使用 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]);
}
会打印
Hi
Hello
Bonjour
Hola
Salut
Hey
更新
如果要将一个数组的项添加到另一个数组,则可以使用 firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
会打印
["apple", "banana", "cherry", "dragonfruit", "elderberry", "fig"]
如果你只是附加一个变量,那么 push()
工作得很好。如果需要追加另一个数组,请使用 concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
吐出来的:
"1,2,3"
"4,5,6"
"1,2,3,4,5,6"
concat不影响 ar1
和 ar2
除非重新分配,例如:
ar1 = ar1.concat(ar2);
alert(ar1);
将显示:
"1,2,3,4,5,6"
很多很棒的信息 这里
一些快速基准测试(每个测试= 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对115ms)arr[arr.length] = b
是比较快的 (160毫秒对185毫秒)谷歌Chrome 6.0(Mac):
我喜欢 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;
}
}
我认为值得一提的是,可以使用多个参数调用push,这些参数将按顺序附加到数组中。例如:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr); // ['first', 'second', 'third']
因此,您可以使用push.apply将数组附加到另一个数组,如下所示:
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr); // ['first', 'second', 'third', 'forth', 'fifth']
2016年更新:用 传播,你不需要那个 apply
更像,像:
arr.push(...['fourth', 'fifth']);
console.log(arr) // ['first', 'second', 'third', 'fourth', 'fifth']
您可以使用 push
和 apply
函数附加两个数组。
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
它会附加 array2
至 array1
。现在 array1
包含 [11, 32, 75, 99, 67, 34]
。
这段代码比编写简单得多 for
循环复制数组中的每个项目。
使用 concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
a
现在包含所有元素, [1, 2, 3, 3, 4, 5]
。
参考: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat
如果 arr
是一个数组,和 val
是您要添加的值:
arr.push(val);
例如。
arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
将记录:
['a', 'b', 'c', 'd']
随着新的ES6 传播运营商,使用连接两个数组 push
变得更容易:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
这增加了内容 arr2
到了最后 arr
。
如果你想追加两个数组 -
var a = ['a', 'b'];
var b = ['c', 'd'];
然后你可以使用:
var c = a.concat(b);
如果你想添加记录 g
阵列(var a=[]
)然后你可以使用:
a.push('g');
Javascript用 ECMAScript 5 现在大多数浏览器都支持的标准,你可以使用 apply()
追加 array1
至 array2
。
var array1 = [3, 4, 5];
var array2 = [1, 2];
Array.prototype.push.apply(array2, array1);
console.log(array2); // [1, 2, 3, 4, 5]
Javascript用 ECMAScript 6 Chrome和FF以及IE Edge支持的标准,你可以使用 spread
运营商:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
该 spread
运营商将取代 array2.push(...array1);
同 array2.push(3, 4, 5);
当浏览器在思考逻辑时。
奖励点
如果你想创造 另一个 变量存储来自两个数组的所有项目,您可以这样做:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
传播运营商(...
)是从一个集合中分散所有项目。