如何在JavaScript中将对象(如字符串或数字)附加到数组中?


当前回答

如果要添加值,可以使用push(),例如arr.push(“测试1”、“测试2”);。

如果您有数组,可以使用concat(),例如Array1.contat(Array2)。

如果只有一个元素要添加,也可以尝试长度方法,例如array[aray.length]=“test”;。

其他回答

当然,concat()也可以用于二维数组。无需循环。

var a = [
    [1, 2],
    [3, 4] ];

var b = [
    ["a", "b"],
    ["c", "d"] ];

b = b.concat(a);

alert(b[2][1]); // Result: 2

使用新的ES6排列运算符,使用push连接两个阵列变得更加容易:

var arr=[1,2,3,4,5];var arr2=[6,7,8,9,10];arr.push(…arr2);控制台日志(arr);

这会将arr2的内容添加到arr的末尾。

Babel REPL示例

如果您使用的是ES6,则可以使用扩展运算符来执行此操作。

var arr = [
    "apple",
    "banana",
    "cherry"
];

var arr2 = [
    "dragonfruit",
    "elderberry",
    "fig"
];

arr.push(...arr2);

如果您知道最高索引(例如存储在变量“i”中),那么您可以

myArray[i + 1] = someValue;

然而,如果你不知道,那么你可以使用

myArray.push(someValue);

如其他答案所示,或者您可以使用

myArray[myArray.length] = someValue;

注意,数组是从零开始的,因此.length返回最高索引加1。

还要注意,您不必按顺序添加,实际上可以跳过值,如

myArray[myArray.length + 1000] = someValue;

在这种情况下,介于两者之间的值将具有未定义的值。

因此,当在JavaScript中循环以验证某个值是否确实存在时,这是一个很好的做法。

这可以通过以下方式实现:

if(myArray[i] === "undefined"){ continue; }

如果您确定数组中没有任何零,则可以执行以下操作:

if(!myArray[i]){ continue; }

当然,在这种情况下,请确保不要使用myArray[i]作为条件(正如互联网上的一些人根据结尾所建议的,一旦i大于最高索引,它将返回undefined,其结果为false)。

一些快速基准测试(每个测试=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;
    }
}