How to append something to an array?
如何将对象(如字符串或数字)附加到JavaScript中的数组中?
使用
1 2 3 4 5 6 7 8 9 10 11 | // initialize array var arr = [ "Hi", "Hello", "Bonjour" ]; // append new value to the array arr.push("Hola"); console.log(arr); |
将打印
1 | ["Hi","Hello","Bonjour","Hola"] |
可以使用
1 2 3 4 5 6 7 8 9 10 | // initialize array var arr = ["Hi","Hello","Bonjour","Hola" ]; // append multiple values to the array arr.push("Salut","Hey"); // display all values for (var i = 0; i < arr.length; i++) { console.log(arr[i]); } |
将打印
1 2 3 4 5 6 | Hi Hello Bonjour Hola Salut Hey |
更新
如果要将一个数组的项添加到另一个数组中,可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 | var arr = [ "apple", "banana", "cherry" ]; arr = arr.concat([ "dragonfruit", "elderberry", "fig" ]); console.log(arr); |
将打印
1 | ["apple","banana","cherry","dragonfruit","elderberry","fig"] |
更新
如果您想将任何值附加到数组的开头(这意味着要附加到第一个索引),那么您可以为此目的使用unshift()。
1 2 3 | var arr = [1, 2, 3] arr.unshift(0) console.log(arr) |
将打印:
1 | [0, 1, 2, 3] |
它还支持像push()方法一样附加多个值。
如果只附加一个变量,那么
1 2 3 4 5 6 7 8 | var ar1 = [1, 2, 3]; var ar2 = [4, 5, 6]; var ar3 = ar1.concat(ar2); alert(ar1); alert(ar2); alert(ar3); |
会吐出来:
1 2 3 | "1,2,3" "4,5,6" "1,2,3,4,5,6" |
concat不影响
1 2 | ar1 = ar1.concat(ar2); alert(ar1); |
将显示:
1 | "1,2,3,4,5,6" |
这里有很多很好的信息
一些快速基准测试(每个测试=500K附加元素,结果是多次运行的平均值)显示如下:
火狐3.6(Mac):
- 小阵列:
arr[arr.length] = b 更快(300ms对800ms) - 大型阵列:
arr.push(b) 更快(500ms对900ms)
Safari 5.0(Mac版):
- 小阵列:
arr[arr.length] = b 更快(90ms对115ms) - 大型阵列:
arr[arr.length] = b 更快(160毫秒对185毫秒)
谷歌Chrome 6.0(Mac):
- 小阵列:没有显著差异(而且Chrome很快!只有~38毫秒!!)
- 大阵列:无显著差异(160ms)
我更喜欢
我的基准循环:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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可以用多个参数调用,这些参数将按顺序附加到数组中。例如:
1 2 3 | var arr = ['first']; arr.push('second', 'third'); console.log(arr); // ['first', 'second', 'third'] |
因此,可以使用push.apply将数组追加到另一个数组,如下所示:
1 2 | arr.push.apply(arr, ['forth', 'fifth']); console.log(arr); // ['first', 'second', 'third', 'forth', 'fifth'] |
带注释的ES5有更多关于推送和应用的确切信息。
2016年更新:通过Spread,您不再需要
1 2 | arr.push(...['fourth', 'fifth']); console.log(arr) // ['first', 'second', 'third', 'fourth', 'fifth'] |
可以使用
1 2 3 4 | var array1 = [11, 32, 75]; var array2 = [99, 67, 34]; Array.prototype.push.apply(array1, array2); |
它将在
如果
1 | arr.push(val); |
例如。
1 2 3 | arr = ['a', 'b', 'c']; arr.push('d'); console.log(arr); |
日志:
1 | ['a', 'b', 'c', 'd'] |
使用新的ES6排列运算符,使用
1 2 3 4 | 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]; |
将
babel repl示例
使用
1 2 3 | a = [1, 2, 3]; b = [3, 4, 5]; a = a.concat(b); |
参考:https://developer.mozilla.org/en/javascript/reference/global_objects/array/concat
现在大多数浏览器都支持带ecmascript 5标准的javascript,您可以使用
1 2 3 4 5 6 | var array1 = [3, 4, 5]; var array2 = [1, 2]; Array.prototype.push.apply(array2, array1); console.log(array2); // [1, 2, 3, 4, 5] |
带ECMAScript 6标准的javascript,由chrome、ff和ie-edge支持,您可以使用
1 2 3 4 5 6 7 | "use strict"; let array1 = [3, 4, 5]; let array2 = [1, 2]; array2.push(...array1); console.log(array2); // [1, 2, 3, 4, 5] |
当浏览器思考逻辑时,
加分
如果要创建另一个变量来存储两个数组中的所有项,可以执行以下操作:
ES5
ES6
排列运算符(
如果要附加两个数组-
1 2 | var a = ['a', 'b']; var b = ['c', 'd']; |
然后你可以使用:
1 | var c = a.concat(b); |
如果要将记录
1 | a.push('g'); |
在javascript中附加数组有几种方法:
1)
1 2 3 | var a = [1, 2, 3]; a.push(4, 5); console.log(a); |
输出:
1 | [1, 2, 3, 4, 5] |
2)
1 2 3 | var a = [1, 2, 3]; a.unshift(4, 5); console.log(a); |
输出:
1 | [4, 5, 1, 2, 3] |
3)使用
1 2 3 4 | var arr1 = ["a","b","c"]; var arr2 = ["d","e","f"]; var arr3 = arr1.concat(arr2); console.log(arr3); |
输出:
1 | ["a","b","c","d","e","f" ] |
4)可以使用数组的
1 2 3 | var ar = ['one', 'two', 'three']; ar[ar.length] = 'four'; console.log( ar ); |
输出:
1 | ["one","two","three","four"] |
5)
1 2 3 4 | var myFish = ["angel","clown","mandarin","surgeon"]; myFish.splice(4, 0,"nemo"); //array.splice(start, deleteCount, item1, item2, ...) console.log(myFish); |
输出:
1 | ["angel","clown","mandarin","surgeon","nemo"] |
6)您也可以通过指定一个新索引并分配一个值,将一个新元素添加到数组中:
1 2 3 | var ar = ['one', 'two', 'three']; ar[3] = 'four'; // add new element to ar console.log(ar); |
输出:
1 | ["one","two","three","four"] |
1 2 3 4 5 | var fruits = ["Banana","Orange","Apple","Mango"]; fruits.push("Kiwi"); // The result of fruits will be: Banana, Orange, Apple, Mango, Kiwi |
您的问题的确切答案已经回答,但让我们看看向数组添加项的其他方法。
1 2 3 4 5 | var fruits = ["Banana","Orange","Apple","Mango"]; fruits.unshift("Lemon","Pineapple"); // The result of fruits will be: Lemon, Pineapple, Banana, Orange, Apple, Mango |
最后,使用
1 2 3 4 5 6 | 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 |
如果您知道最高的索引(例如存储在变量"i"中),那么您可以这样做
1 | myArray[i + 1] = someValue; |
但是,如果你不知道,你也可以使用
1 | myArray.push(someValue); |
如其他答案所示,或者您可以使用
1 | myArray[myArray.length] = someValue; |
请注意,数组是从零开始的,所以。length返回最高的索引加上一。
还要注意,您不必按顺序添加,实际上可以跳过值,如
1 | myArray[myArray.length + 1000] = someValue; |
在这种情况下,中间的值将具有未定义的值。
因此,当通过JavaScript循环验证某个值在该点上是否确实存在时,这是一个很好的实践。
这可以通过如下方式实现:
1 | if(myArray[i] ==="undefined"){ continue; } |
如果确定数组中没有任何零,则可以执行以下操作:
1 | if(!myArray[i]){ continue; } |
当然,在这种情况下,请确保不要将其用作myarray[i]的条件(正如一些互联网上的人建议的那样,只要我大于最高的索引,它就会返回未定义的,其值为false)。
现在,您可以利用ES6语法,只需执行以下操作:
1 2 | let array = [1, 2]; console.log([...array, 3]); |
保持原始数组不变。
让array length属性完成以下工作:
1 | myarray[myarray.length] = 'new element value added to the end of the array'; |
myarray.length返回数组中的字符串数。JS是从零开始的,所以数组的下一个元素键将是数组的当前长度。前任:
1 2 | var myarray = [0, 1, 2, 3], myarrayLength = myarray.length; //myarrayLength is set to 4 |
Just want to add a snippet for non-destructive addition of an element.
1 | var newArr = oldArr.concat([newEl]); |
当然,
var a = [
[1, 2],
[3, 4] ];var b = [
["a","b"],
["c","d"] ];b = b.concat(a);
alert(b[2][1]); // result 2
如果使用ES6,可以使用Spread运算符来执行此操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 | var arr = [ "apple", "banana", "cherry" ]; var arr2 = [ "dragonfruit", "elderberry", "fig" ]; arr.push(...arr2); |
您可以使用新的javascript ES 6功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 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' ] |
向数组追加值
由于array.prototype.push将一个或多个元素添加到数组末尾并返回数组的新长度,因此有时我们只需要获取新的最新数组,这样就可以执行以下操作:
1 2 3 4 | const arr = [1, 2, 3]; const val = 4; arr.concat([val]); // [1, 2, 3, 4] |
或者只是:
1 | [...arr, val] // [1, 2, 3, 4] |
如果要组合两个数组而不重复,可以尝试下面的代码
1 2 3 4 5 | array_merge = function (arr1, arr2) { return arr1.concat(arr2.filter(function(item){ return arr1.indexOf(item) < 0; })) } |
用途:
1 2 3 | array1 = ['1', '2', '3'] array2 = ['2', '3', '4', '5'] combined_array = array_merge(array1, array2) |
输出:[1,2,3,4,5]
附加单个元素
1 2 3 4 5 6 7 8 9 10 11 12 13 | //Append to the end arrName.push('newName1'); //Prepend to the start arrName.unshift('newName1'); //Insert at index 1 arrName.splice(1, 0,'newName1'); //1: index number, 0: number of element to remove, newName1: new element // Replace index 3 (of exists), add new element otherwise. arrName[3] = 'newName1'; |
附加多个元素
1 2 3 4 5 | //Insert from index number 1 arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3'); //1: index number from where insert starts, //0: number of element to remove, //newElemenet1,2,3: new elements |
追加数组
1 2 3 | //join two or more arrays arrName.concat(newAry1, newAry2); //newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array |
you.push()输入该值。示例:array.push(value);
如果要将单个值附加到数组中,只需使用push方法。它将在数组末尾添加一个新元素。
但是,如果您打算添加多个元素,那么将这些元素存储在一个新数组中,然后用第一个数组连接第二个数组……无论您希望如何。
1 2 3 4 | 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); |
我们在javascript中没有数组的append函数,但是我们有push和unshift,假设您有下面的数组:
1 | var arr = [1, 2, 3, 4, 5]; |
我们喜欢在这个数组中附加一个值,我们可以这样做,arr.push(6),它会在数组的末尾添加6个值:
1 | arr.push(6); // return [1, 2, 3, 4, 5, 6]; |
我们也可以使用unshift,看看我们如何应用它:
1 | arr.unshift(0); //return [0, 1, 2, 3, 4, 5]; |
它们是向数组添加或追加新值的主要函数。
附加单个项目
要将单个项附加到数组,请使用数组对象提供的
1 2 3 | const fruits = ['banana', 'pear', 'apple'] fruits.push('mango') console.log(fruits) |
要创建新的数组,请使用
1 2 3 | const fruits = ['banana', 'pear', 'apple'] const allfruits = fruits.concat('mango') console.log(allfruits) |
请注意,
1 2 3 | const fruits = ['banana', 'pear', 'apple'] const allfruits = fruits.concat('mango') console.log(allfruits) |
1 2 | let fruits = ['banana', 'pear', 'apple'] fruits = fruits.concat('mango') |
附加多个项目
要向数组追加多个项,可以使用
1 2 3 | const fruits = ['banana', 'pear', 'apple'] fruits.push('mango', 'melon', 'avocado') console.log(fruits) |
您还可以使用前面看到的
1 2 3 | const fruits = ['banana', 'pear', 'apple'] const allfruits = fruits.concat('mango', 'melon', 'avocado') console.log(allfruits) |
或数组:
1 2 3 | const fruits = ['banana', 'pear', 'apple'] const allfruits = fruits.concat(['mango', 'melon', 'avocado']) console.log(allfruits) |
请记住,如前所述,此方法不会改变原始数组,但会返回一个新数组。
Originally posted at
您可以使用push方法。
1 2 3 4 5 6 7 8 9 | Array.prototype.append = function(destArray){ destArray = destArray || []; this.push.call(this,...destArray); return this; } var arr = [1,2,5,67]; var arr1 = [7,4,7,8]; console.log(arr.append(arr1));// [7, 4, 7, 8, 1, 4, 5, 67, 7] console.log(arr.append("Hola"))//[1, 2, 5, 67, 7, 4, 7, 8,"H","o","l","a"] |
如果要添加值,可以使用push()。如
如果有数组,可以使用concat()。如
如果你只有一个元素要添加,你也可以尝试长度方法。如
要将对象(如字符串或数字)附加到数组,请使用-
在数组中追加项
1 2 3 4 5 6 7 8 9 | 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]); } |