WebGL Tutorial
and more

concat

撰写时间:2024-03-11

最新修订:2024-03-11

concat

合并其他数组或数值。不会改变原数组。

原型

*[]concat
  • ... *values

参数

...values
要合并的可变长的数值。

返回值

返回合并之后的数组。

说明

concat方法最主要的目的是将多个数组合并为一个数组。但同时也可合并其他数据类型的元素。详见下面的例子。

例子

合并数组

当我们需要合并多个数组时,可使用concat方法。

let arr1 = [1, 2, 3]; let arr2 = [7, 8, 9]; let newArr = arr1.concat(arr2); console.log(newArr); // [1, 2, 3, 7, 8, 9] console.log(arr1); // [1, 2, 3]

调用arr1concat方法,并以arr2作为参数传入,将导致将arr2的各个元素都添加在arr1的末尾,并返回添加后的新数组。而原来的数组不受影响。

注意,arr1arr2均为数组,但数组的元素都展开为各个独立的元素并置于新的数组中。

省略参数

concat的参数values是可选的。当省略此参数时,将返回所调用数组的一个浅复制。

let arr1 = [1, 2, 3]; let newArr = arr1.concat(); console.log(newArr); // [1, 2, 3] console.log(arr1 === newArr); // false

合并多种数据类型

concat方法不仅用于合并数组,也可用于合并其他数据类型的数值。

let arr1 = [1, 2, 3]; let value1 = 5; let value2 = {0: 'a', 1: 'b', length: 2}; let newArr = arr1.concat(value1, value2); console.log(newArr); // [1, 2, 3, 5, {0: "a", 1: "b", length: 2}]

将类似数组的对象视为数组而合并

上例中,value2是一个类似数组的对象(array-like object)。但从上例看到,在合并时,concat方法默认情况下并未将其视为数组而合并,而是视为对象而合并。

要让concat将其视为一个数组而予以合并,可打开其Symbol.isConcatSpreadable的开头。

let arr = [1, 2, 3]; let value = {0: 'a', 1: 'b', length: 2, [Symbol.isConcatSpreadable]:true}; let newArr = arr.concat(value); console.log(newArr); // [1, 2, 3, "a", "b"]

参见

  1. push

参考资源

  1. ECMA 262: Array Objects