如何在JavaScript中将对象(如字符串或数字)附加到数组中?
当前回答
附加单个项目
要将单个项附加到数组,请使用array对象提供的push()方法:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()对原始数组进行变异。
要创建新数组,请使用concat()array方法:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
请注意,concat()实际上并没有向数组中添加项,而是创建了一个新数组,您可以将其分配给另一个变量,或重新分配给原始数组(声明为let,因为无法重新分配常量):
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')
附加多个项目
要将多个项附加到数组中,可以通过使用多个参数调用push():
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
您还可以使用前面看到的concat()方法,传递一个用逗号分隔的项目列表:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
或阵列:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
请记住,如前所述,此方法不会改变原始数组,但会返回一个新数组。
最初发布于
其他回答
一些快速基准测试(每个测试=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更快(160ms比185ms)
谷歌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;
}
}
如果只追加一个变量,则push()工作正常。如果需要附加另一个数组,请使用concat():
var ar1=[1,2,3];var ar2=[4,5,6];var ar3=ar1.concat(ar2);警报(ar1);警报(ar2);警报(ar3);
除非重新分配,否则concat不会影响ar1和ar2,例如:
var ar1=[1,2,3];var ar2=[4,5,6];ar1=ar1.concat(ar2);警报(ar1);
关于JavaScript参考,有很多很棒的信息。
在数组上追加项
let fruits = ["orange", "banana", "apple", "lemon"]; /* Array declaration */
fruits.push("avacado"); /* Adding an element to the array */
/* Displaying elements of the array */
for(var i=0; i < fruits.length; i++){
console.log(fruits[i]);
}
使用新的ES6排列运算符,使用push连接两个阵列变得更加容易:
var arr=[1,2,3,4,5];var arr2=[6,7,8,9,10];arr.push(…arr2);控制台日志(arr);
这会将arr2的内容添加到arr的末尾。
Babel REPL示例
让数组长度属性执行以下操作:
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length返回数组中的字符串数。JavaScript是从零开始的,因此数组的下一个元素键将是数组的当前长度。
例子:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; // myarrayLength is set to 4