美文网首页
ES5-Array-concat

ES5-Array-concat

作者: chrisghb | 来源:发表于2019-06-10 22:19 被阅读0次

参考文章:concat()

concat方法用于多个数组合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变

  • 请注意,concat()方法并没有修改当前Array,而是返回了一个新的Array
['hello'].concat(['world'])
// ["hello", "world"]

['hello'].concat(['world'], ['!'])
// ["hello", "world", "!"]

[].concat({a: 1}, {b: 2})
// [{ a: 1 }, { b: 2 }]

[2].concat({a: 1})
// [2, {a: 1}]

除了数组作为参数,concat也接受其他类型的值作为参数,添加到目标数组尾部。

[1, 2, 3].concat(4, 5, 6)
// [1, 2, 3, 4, 5, 6]
  • 实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里。即如果要进行concat() 操作的参数是数组,那么添加的是<font color=red size=4>数组中的元素</font>,而不是数组。
var arr = ['A', 'B', 'C'];
arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]

注意:concat只会拉平数组参数一次,不会拉平两次

arr.concat([1, [2, 3]]); // [1, 2, 3, 1, [2, 3]]
  • 如果数组成员包括对象,concat方法返回当前数组的一个浅拷贝。所谓“浅拷贝”,指的是新数组拷贝的是对象的引用
var obj = { a: 1 };
var oldArray = [obj];

var newArray = oldArray.concat();

obj.a = 2;
newArray[0].a // 2

上面代码中,原数组包含一个对象,concat方法生成的新数组包含这个对象的引用。所以,改变原对象以后,新数组跟着改变

相关文章

  • ES5-Array-concat

    参考文章:concat() concat方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回...

网友评论

      本文标题:ES5-Array-concat

      本文链接:https://www.haomeiwen.com/subject/ethxfctx.html