javascript - 如何將某個東西附加到陣列中?
如何在 JavaScript 中將一個物件(例如字串或數字)附加到陣列中?
答案#1
使用 Array.prototype.push 方法將值附加到陣列的末尾:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);您可以使用 push() 函數在一次調用中向陣列追加多個值:
// 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]);
}請注意,push() 方法會返回陣列更新後的長度。
更新
如果你想將一個陣列的項目加入到另一個陣列中,你可以使用 firstArray.concat(secondArray) :
var arr = [
"apple",
"banana",
"cherry"
];
// Do not forget to assign the result as, unlike push, concat does not change the existing array
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);更新
如果你想在陣列的開始(即第一個索引)添加任何值,只要對這個答案做一個補充,你可以使用 Array.prototype.unshift 來達到這個目的。
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);它也支援一次附加多個值,就像 push 一樣。
更新
另一種使用 ES6 語法的方法是使用 擴展運算符 返回一個新陣列。這樣可以保持原始陣列不變,但返回一個附加或前置了新元素的新陣列,符合函數式編程的精神。
const arr1 = [
"Hi",
"Hello",
"Bonjour",
];
const arr2 = [
"Ciao",
"Hej",
"Merhaba",
];
const newArr1 = [
...arr1,
"Salut",
];
const newArr2 = [
"Salut",
...arr2,
];
const newArr3 = [
...arr1,
...arr2,
];
console.log(newArr1, newArr2, newArr3);答案#2
如果你只是在附加單個變量,那麼 push() 就完全可以。如果你需要附加另一個數組,請使用 concat():
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);除非重新賦值,否則 concat 不會影響 ar1 和 ar2,例如:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);在 JavaScript 參考 上有很多很棒的資訊。
答案#3
一些快速的基準測試(每次測試=添加 50 萬個元素,結果是多次運行的平均值)顯示如下:
Firefox 3.6(Mac):
- 小陣列:
arr[arr.length]=b較快(300毫秒對比800毫秒) - 大型陣列:
arr.push(b)較快(500 毫秒 vs. 900 毫秒)
Safari 5.0(Mac):
- 小陣列:
arr[arr.length]=b較快 (90ms 對 115ms) - 大型陣列:
arr[arr.length]=b較快 (160ms 對 185ms)
Google Chrome 6.0(Mac):
- 小型陣列:沒有顯著差異(而且 Chrome 非常快!僅約 38 毫秒 !!)
- 大型陣列:沒有顯著差異(160毫秒)
我比較喜歡 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;
}
}
答案#4
我認為值得一提的是,push 可以用多個參數來調用,這些參數將按順序附加到陣列中。例如:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);因此,你可以使用 push.apply 將一個陣列附加到另一個陣列,如下所示:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);帶註解的 ES5 提供了更多關於 push 和 apply 具體作用的資訊。
2016 更新:有了展開運算符,你不再需要那個 apply,像這樣:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;答案#5
你可以使用 push 和 apply 函數來附加兩個陣列。
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);它會將 array2 附加到 array1。現在 array1 包含 [11, 32, 75, 99, 67, 34]。這段程式碼比寫 for 迴圈來複製陣列中的每一個元素簡單得多。
答案#6
使用新的 ES6 擴展運算子,使用 push 連接兩個陣列變得更加容易:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);這會將 arr2 的內容加入到 arr 的末尾。
Babel REPL 範例
答案#7
如果 arr 是一個陣列,而 val 是你希望添加的值,使用:
arr.push(val);
例如
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);答案#8
使用 concat:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);答案#9
使用符合 ECMAScript 5 (ES5) 標準的 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、Firefox、Internet Explorer 和 Edge 支援的 ECMAScript 6 (ES6) 標準的 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); 當瀏覽器在處理邏輯時。
額外加分
如果你想創建另一個變量來存儲兩個陣列中的所有項目,你可以這樣做:
ES5 var combinedArray=array1.concat(array2);
ES6 const combinedArray=[...array1, ...array2]
展開運算子(...)用於展開集合中的所有項目。
答案#10
如果你想要附加兩個陣列 -
var a = ['a', 'b'];
var b = ['c', 'd'];
那你可以使用:
var c = a.concat(b);
如果你想將記錄 g 添加到陣列 (var a=[]),你可以使用:
a.push('g');
答案#11
在 JavaScript 中,有幾種方法可以附加陣列:
1) push() 方法會將一個或多個元素加入陣列的末端,並返回陣列的新長度。
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
輸出:
[1, 2, 3, 4, 5]
2) unshift() 方法會向陣列的開頭添加一個或多個元素,並返回陣列的新長度:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
輸出:
[4, 5, 1, 2, 3]
3) concat() 方法用於合併兩個或多個陣列。此方法 不會改變現有的陣列,而是返回一個新的陣列。
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
輸出:
[ "a", "b", "c", "d", "e", "f" ]
4) 您可以使用陣列的 .length 屬性將元素加入陣列的末端:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
輸出:
["one", "two", "three", "four"]
5) splice() 方法透過移除現有元素和/或新增元素來改變陣列的內容:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
輸出:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) 您也可以簡單地透過指定一個新的索引並賦值來向陣列添加新元素:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
輸出:
["one", "two","three","four"]
答案#12
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
答案#13
現在,你可以利用 ES6 語法直接做到
let array = [1, 2];
console.log([...array, 3]);
保持原始陣列不可變。
答案#14
附加單一元素
// 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';
附加多個元素
// 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
附加陣列
// Join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
答案#15
如果你使用的是 ES6,你可以使用展開運算子來做到這一點。
var arr = [
"apple",
"banana",
"cherry"
];
var arr2 = [
"dragonfruit",
"elderberry",
"fig"
];
arr.push(...arr2);
答案#16
如果你知道最高索引(例如存儲在變數「i」中),那麼你可以做
myArray[i + 1] = someValue;
然而,如果你不知道的話,你可以使用
myArray.push(someValue);
如其他答案所建議的,或者你也可以使用
myArray[myArray.length] = someValue;
請注意,陣列是從零開始計算的,因此 .length 會回傳最大索引值加一。
還要注意,你不必按順序添加,實際上你也可以跳過某些值,例如
myArray[myArray.length + 1000] = someValue;
在這種情況下,介於之間的值將具有 未定義 的值。
因此,在迴圈中遍歷 JavaScript 時,確認某個值在該點實際存在是一個良好的做法。
這可以通過如下方式來完成:
if(myArray[i] === "undefined"){ continue; }
如果你確定陣列中沒有任何零,那麼你可以直接這麼做:
if(!myArray[i]){ continue; }
當然,在這種情況下,請確保不要將條件設定為 myArray[i](如一些網路上的人建議的,因為一旦 i 大於最大索引,它將返回 undefined,而 undefined 會被評估為 false)。
答案#17
你可以使用 JavaScript 展開運算子語法來做到這一點:
// Initialize the array
var arr = [
"Hi",
"Hello",
"Bangladesh"
];
// Append a new value to the array
arr = [...arr, "Feni"];
// Or you can add a variable value
var testValue = "Cool";
arr = [...arr, testValue ];
console.log(arr);
// Final output [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]
答案#18
concat() 當然也可以用於二維陣列。無需迴圈。
var a = [
[1, 2],
[3, 4] ];
var b = [
["a", "b"],
["c", "d"] ];
b = b.concat(a);
alert(b[2][1]); // Result: 2
答案#19
只是想添加一個片段,用於非破壞性地添加一個元素。
var newArr = oldArr.concat([newEl]);
答案#20
讓陣列的長度屬性來完成工作:
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length 會回傳陣列中字串的數量。JavaScript 是從零開始計數的,因此陣列的下一個元素鍵將是陣列目前的長度。
範例:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; // myarrayLength is set to 4
