如何追加一些数组?
如何将一个对象(如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不会影响ar1
和ar2
,例如:
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']
你可以使用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]
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的追加函数,但是我们有push和unshift ,想像下面的数组:
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);