如何追加一些数组?

如何将一个对象(如string或数字)附加到JavaScript中的数组?

使用push()函数追加到数组中:

 // initialize array var arr = [ "Hi", "Hello", "Bonjour" ]; // append new value to the array arr.push("Hola"); console.log(arr); 

如果你只追加一个variables,那么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不会影响ar1ar2 ,例如:

 ar1 = ar1.concat(ar2); alert(ar1); 

将显示:

 "1,2,3,4,5,6" 

很多很棒的信息在这里

一些快速基准testing(每个testing= 500k附加元素和结果是多次运行的平均值)显示如下:

Firefox 3.6(Mac):

  • 小数组: arr[arr.length] = b更快 (300ms对800ms)
  • 大arrays: arr.push(b)更快 (500ms对900ms)

Safari 5.0(Mac):

  • 小数组: arr[arr.length] = b更快 (90ms对115ms)
  • 大数组: arr[arr.length] = b更快 (160ms比185ms)

Google Chrome 6.0(Mac):

  • 小arrays: 没有显着差异 (和Chrome是快!只有〜38ms !!)
  • 大arrays: 无显着差异 (160毫秒)

我更喜欢arr.push()语法,但是我认为使用arr[arr.length]版本会更好,至less在原始速度上是这样。 我很乐意看到一个IE运行的结果。


我的基准testing循环:

 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'] 

注释的ES5有更多的信息,究竟是什么推动和应用做的。

2016更新:随着传播 ,你不需要再apply了,如:

 arr.push(...['fourth', 'fifth']); console.log(arr) // ['first', 'second', 'third', 'fourth', 'fifth'] 

你可以使用pushapply函数来追加两个数组。

 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] array1 [11, 32, 75, 99, 67, 34] 。 这个代码比编写循环来复制数组中的每一项都简单得多。

如果arr是一个数组, val是你希望添加的值:

 arr.push(val); 

例如

 arr = ['a', 'b', 'c']; arr.push('d'); console.log(arr); 

会logging:

 ['a', 'b', 'c', 'd'] 

使用concat

 a = [1, 2, 3]; b = [3, 4, 5]; a = a.concat(b); 

现在包含所有的元素, [1, 2, 3, 3, 4, 5]

参考: https : //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat

使用新的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的末尾。

Babel REPL例子

如果你想追加两个数组 –

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

那么你可以使用:

 var c = a.concat(b); 

如果你想添加loggingg数组( var a=[] ),那么你可以使用:

 a.push('g'); 

现在大多数浏览器都支持ECMAScript 5标准的Javascript,你可以使用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] 

支持Chrome和FF和IE Edge的ECMAScript 6标准的Javascript,可以使用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); 当浏览器正在思考逻辑时。

奖励点

如果你想创build另一个variables来存储这两个数组的所有项目,你可以这样做:

ES5 var combinedArray = array1.concat(array2);

ES6 const combinedArray = [...array1, ...array2]

展开操作符( ... )将分散集合中的所有项目。

push()方法将新项添加到数组的末尾,并返回新的长度。 例:

 var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Kiwi"); // The result of fruits will be: Banana, Orange, Apple, Mango, Kiwi 

您的问题的确切答案已经得到解答,但是我们来看看其他一些将项目添加到数组的方法。

unshift()方法将新项添加到数组的开头,并返回新的长度。 例:

 var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.unshift("Lemon", "Pineapple"); // The result of fruits will be: Lemon, Pineapple, Banana, Orange, Apple, Mango 

最后, concat()方法用于连接两个或多个数组。 例:

 var fruits = ["Banana", "Orange"]; var moreFruits = ["Apple", "Mango", "Lemon"]; var allFruits = fruits.concat(moreFruits); // The values of the children array will be: Banana, Orange, Apple, Mango, Lemon 

如果你知道最高指标(如存储在variables“我”),那么你可以做

 myArray[i + 1] = someValue; 

但是,如果你不知道,那么你可以使用

 myArray.push(someValue); 

作为其他答案build议,或者你可以使用

 myArray[myArray.length] = someValue; 

请注意,数组是基于零的,所以.length返回最高索引加1。

另外请注意,您不必按顺序添加,您可以实际跳过值,如

 myArray[myArray.length + 1000] = someValue; 

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

因此,在循环JavaScript时validation一个值实际上是否存在是一个很好的做法。

这可以通过如下所示来完成:

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

如果你确定你没有在数组中有任何零,那么你可以这样做:

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

当然,请确保在这种情况下,你不用作为条件myArray [我](因为互联网上的一些人build议基于结束,只要我是最大的那么最高的索引,它将返回undefined其中评估假)

有几种方法可以在JavaScript中追加数组:

1) push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。

 var a = [1, 2, 3]; a.push(4, 5); console.log(a); 

让数组长度属性做的工作:

 myarray[myarray.length] = 'new element value added to the end of the array'; 

myarray.length返回数组中的string数量。 JS是基于零的,所以数组的下一个元素键将是数组的当前长度。 EX:

 var myarray = [0, 1, 2, 3], myarrayLength = myarray.length; //myarrayLength is set to 4 

当然, concat()也可以和2维数组一起使用。 不需要循环。

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

var b = [[“a”,“b”],[“c”,“d”]];

b = b.concat(a);

警报(B [2] [1]); //结果2

只是想添加一个元素非破坏性的添加一个片段。

 var newArr = oldArr.concat([newEl]); 

现在,你可以利用ES6的语法,只是:

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

如果您使用的是ES6,则可以使用扩展操作符来完成。

 var arr = [ "apple", "banana", "cherry" ]; var arr2 = [ "dragonfruit", "elderberry", "fig" ]; arr.push(...arr2); 

如果你想结合2个数组而不重复,你可以尝试下面的代码

 array_merge = function (arr1, arr2) { return arr1.concat(arr2.filter(function(item){ return arr1.indexOf(item) < 0; })) } 

用法:

 array1 = ['1', '2', '3'] array2 = ['2', '3', '4', '5'] combined_array = array_merge(array1, array2) 

输出: [1,2,3,4,5]

如果你想追加一个值到一个数组中,只需使用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. 

我们在javascript中没有对Array的追加函数,但是我们有pushunshift ,想像下面的数组:

 var arr = [1, 2, 3, 4, 5]; 

我们喜欢给这个数组添加一个值,我们可以这样做,arr.push(6),它将在数组的末尾添加6:

 arr.push(6); // return [1, 2, 3, 4, 5, 6]; 

我们也可以使用unshift,看看我们如何应用这个:

 arr.unshift(0); //return [0, 1, 2, 3, 4, 5]; 

它们是向数组添加或附加新值的主要函数。

你用.push()那个值。 例如: array.push(value);

你可以使用新的JavaScript的Es 6function:

 // initialize array var arr = [ "Hi", "Hello", "Bangladesh" ]; // append new value to the array arr= [...arr , "Feni"]; // or you can put a variable value var testValue = "Cool"; arr = [...arr , testValue ]; console.log(arr); // final output [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ] 

使用方法push()会将一个项目追加到一个数组中。 看下面的例子。

  array=['a','b','c']; array.push('d') console.log(array);