concat()
方法的语法为:
arr.concat(value1, value2, ..., valueN)
在这里, arr
是一个数组。
concat()参数
concat()
方法采用任意数量的数组和/或值作为参数。
从concat()返回值
- 合并参数中传递的所有数组/值后,返回一个新创建的数组。
concat()
方法首先创建一个新数组,其中包含调用该方法的对象的元素。然后按顺序添加参数或参数元素(用于数组)。
示例1:使用concat()方法
var languages1 = ["JavaScript", "Python", "Java"];
var languages2 = ["C", "C++"];
// concatenating two arrays
var new_arr = languages1.concat(languages2);
console.log(new_arr); // [ 'JavaScript', 'Python', 'Java', 'C', 'C++' ]
// concatenating a value and array
var new_arr1 = languages2.concat("Lua", languages1);
console.log(new_arr1); // [ 'C', 'C++', 'Lua', 'JavaScript', 'Python', 'Java' ]
输出
[ 'JavaScript', 'Python', 'Java', 'C', 'C++' ]
[ 'C', 'C++', 'Lua', 'JavaScript', 'Python', 'Java' ]
示例2:串联嵌套数组
concat()
方法以下列方式返回级联元素的浅表副本:
- 它将对象引用复制到新数组。 ( 例如 :传递嵌套数组)因此,如果修改了引用的对象,则更改在返回的新数组中可见。
- 它将字符串和数字的值复制到新数组。
var randomList = [1, 2, 3];
var randomNestedList = [
[4, 5],
[6, 7],
];
var combined = randomList.concat(randomNestedList);
console.log(combined); // [ 1, 2, 3, [ 4, 5 ], [ 6, 7 ] ]
// changing the value 1 to 0
randomList[0] = 0;
console.log(randomList); // [ 0, 2, 3 ]
// changes not reflected in concatenated array
console.log(combined); // [ 1, 2, 3, [ 4, 5 ], [ 6, 7 ] ]
// modifying nested list (adding 6 to first element)
randomNestedList[0].push(6);
console.log(randomNestedList); // [ [ 4, 5, 6 ], [ 6, 7 ] ]
// changes are reflected in concatenated array
// since it is a reference to the object
console.log(combined); // [ 1, 2, 3, [ 4, 5, 6 ], [ 6, 7 ] ]
输出
[ 1, 2, 3, [ 4, 5 ], [ 6, 7 ] ]
[ 0, 2, 3 ]
[ 1, 2, 3, [ 4, 5 ], [ 6, 7 ] ]
[ [ 1, 2, 3 ], [ 6, 7 ] ]
[ 1, 2, 3, [ 4, 5, 6 ], [ 6, 7 ] ]
在这里,嵌套数组的引用被复制到级联数组。因此,当我们修改任何引用时,这些更改会在所有地方反映出来。
推荐读物:
- JavaScript Array.pop()
- JavaScript Array.push()