Javascript不清不楚之concat

Array.prototype.concat

代码均来自:MDN

此方法用来合并多个数组,不会改变原有的数组,返回一个新的数组(根据提供的数组做浅拷贝生成新数组)
注意:数组/值在连接时保持不变。此外,对于新数组的任何操作(仅当元素不是对象引用时)都不会对原始数组产生影响,反之亦然

  • 多个值或者数组合并
var arr = [1, 2, 3];
var res = arr.concat(4, [5, 6], [[7, 8], [9, 10]], {});
console.log(arr);   // [1, 2, 3]
console.log(res);   // [1, 2, 3, 4, 5, 6, Array(2), Array(2), {}]
//如果合并项是原子类型则直接push到arr,如果是数组则将数组里的元素挨个push到arr, 其他类型直接push
  • 合并嵌套数组
var arr1 = [[1, 2, 3], 4, 5], arr2 = [6, 7];
var res = arr1.concat(arr2);
arr1[0][0] = 11;
console.log(res);       // [[11, 2, 3], 4, 5, 6, 7]
console.log(arr1);      // [[11, 2, 3], 4, 5]
//由此可见arr1和arr2都是浅拷贝合并到了新书中res中,更改arr1的第一个引用型元素的值也反馈到了res中

猜你喜欢

转载自blog.csdn.net/qq452981462/article/details/80885605