concat()
方法回傳一個包含呼叫者陣列本身的值,以及被當作參數提供的陣列或是值的而成的新陣列。
語法
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
參數
valueN
- 陣列 以及/或者 值,用來合併成一個新的陣列。請參閱下方詳細資訊描述。
描述
concat
產生一個由呼叫者陣列自己的元素,以及對每一個參數按照順序,合併參數的元素(如果參數是個陣列) 或者是參數自己本身(如果參數不是一個陣列)成為一個新的陣列。
concat
不會改變 this
自己本身或是任何被提供當做參數的陣列,取而代之則是回傳一個淺層複製(shallow copy) 包含了與原始的陣列中一樣的元素的副本。原始陣列的元素被複製到新的陣列的規則如下所示:
- 物件參考(並非為實際的物件):
concat
複製物件的參考至新的陣列。不管是原始的還是新的陣列都參考到相同的物件。也就是說,如果一個被參照的物件被修改了,變動會同時反映到新的以及原始的陣列中。 - 字串或是數值(不是
String
與Number
物件):concat
複製字串及數值的值到新的陣列。
注意:連接 (多個)陣列 / (多個)值將讓原始的陣列不會被受到影響。此外,任何對新陣列(只有在元素不是物件參考的情況下)的操作都不會影響原始的陣列,反之亦然。
範例
合併兩個陣列
下面的程式碼為合併兩個陣列:
var alpha = ['a', 'b', 'c'], numeric = [1, 2, 3]; var alphaNumeric = alpha.concat(numeric); console.log(alphaNumeric); // 結果: ['a', 'b', 'c', 1, 2, 3]
合併三個陣列
下面的程式碼為合併三個陣列:
var num1 = [1, 2, 3], num2 = [4, 5, 6], num3 = [7, 8, 9]; var nums = num1.concat(num2, num3); console.log(nums); // 結果: [1, 2, 3, 4, 5, 6, 7, 8, 9]
合併值到一個陣列
下面的程式碼為合併三個值到一個陣列中:
var alpha = ['a', 'b', 'c']; var alphaNumeric = alpha.concat(1, [2, 3]); console.log(alphaNumeric); // 結果: ['a', 'b', 'c', 1, 2, 3]
規格
瀏覽器相容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 1.0 | 1.0 (1.7 or earlier) | 5.5 | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
請參閱
push
/pop
— 從陣列的尾端加入/移除元素unshift
/shift
— 從陣列的前端加入/移除元素splice
— 從陣列特定的位置加入/移除元素String.prototype.concat()
Symbol.isConcatSpreadable
– 控制扁平化