问题描述:

// 把一个数组加入到一个数组之后
var a = [1,2,3];
var b = [4,5,6];

// 最终结果
a === [1,2,3,4,5,6]

用原始的for循环去解决问题我们自不必说。使用数组方法,我们首先想到的是concat,但是concat不改变原数组,所以我们需要把返回结果赋值给前一个数组,这样写并不美观。其次我们想到push,但是push是多个参数输入而不是一个数组输入,鉴于此我们可以采用applycall函数,但这样写也不美观,于是ES6有了解构赋值...

// 把一个数组加入到一个数组之后
var a = [1,2,3];
var b = [4,5,6];

// 方法1
Array.prototype.push.apply(a, b);
// 变体1 Array.prototype.push.call(a, ...b);
// 变体2 a.push.apply(a, b);
// 变体3 [].push.apply(a, b);

// 方法2
a = a.concat(b);

// 方法3
a.push(...b);