如何在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)

请记住,如前所述,此方法不会改变原始数组,但会返回一个新数组。

最初发布于

其他回答

附加单个项目

要将单个项附加到数组,请使用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方法。它将在数组末尾添加一个新元素。

但是,如果您打算添加多个元素,请将这些元素存储在一个新数组中,并将第二个数组与第一个数组连接起来。。。无论你想怎样。

arr=['a','b','c'];
arr.push('d');
//now print the array in console.log and it will contain 'a','b','c','d' as elements.
console.log(array);

您可以使用push和apply函数附加两个数组。

var数组1=[11,32,75];var数组2=[99,67,34];数组.原型.推送.应用(array1,array2);console.log(array1);

它将把array2追加到array1。现在数组1包含[11,32,75,99,67,34]。这段代码比编写循环来复制数组中的每个项要简单得多。

现在,您可以利用ES6语法

let array = [1, 2];
console.log([...array, 3]);

保持原始数组不变。