Javascript 不使用concat方法添加两个数组

Javascript 不使用concat方法添加两个数组,javascript,Javascript,这是我想做的一个例子 function test(r){ var arr = ['d','e','f']; r.push(arr); /* More Code */ return r; } var result = test(['a','b','c']); alert(result.length);//I want this to alert 6 我需要做的是传入一个数组并将其他数组附加到它的末尾,然后返回该数组。由于通过引用传递,我不能使用array.concat(a

这是我想做的一个例子

function test(r){
  var arr = ['d','e','f'];
  r.push(arr);
  /*
  More Code
  */
  return r;
}
var result = test(['a','b','c']);
alert(result.length);//I want this to alert 6
我需要做的是传入一个数组并将其他数组附加到它的末尾,然后返回该数组。由于通过引用传递,我不能使用
array.concat(array2)。有没有一种方法可以做到这一点,而不用像for循环那样逐个添加元素。我尝试了类似
r.push(arr.join())但这也不起作用。此外,我还希望在数组中包含对象,以便真正实现
r.push(arr.join())工作不太好

>>> var x = [1, 2, 3], y = [4, 5, 6];
>>> x.push.apply(x, y) // or Array.prototype.push.apply(x, y)
>>> x
[1, 2, 3, 4, 5, 6]
或者,您现在可以使用

//generate a new array
a=[...x,...y];
//or modify one of the original arrays
x.push(...y);
这是,我只是发布了我做的测试来验证它。 所有信贷都应归于emulbreh

// original array
var r = ['a','b','c'];

function test(r){
  var arr = ['d','e','f'];
  r.push.apply(r, arr);

  /*
  More Code
  */
  return r;
}
var result = test( r );
console.log( r ); // ["a", "b", "c", "d", "e", "f"]
console.log( result === r ); // the returned array IS the original array but modified

错误,返回的数组不是传递给函数的修改过的数组,而是使用
apply
将数组的所有成员推到另一个数组上的有趣用法+1我以前见过apply方法,但从未真正理解过它(请注意,self需要学习apply),但它确实是一种简洁的方式来做我想做的事情。但是,第二种方法与第一种方法有何不同?使用Array.prototype而不是x.push.apply.两者是等效的。调用
x.push(y)
意味着“使用作用域
x
和参数
[y]
调用函数
x.push
。在这种情况下
x.push
解析为
Array.prototype.push
,因此:
Array.prototype.push.apply(x,[y])
。我只提到了第二种形式,因为它有时比只引用
x
一次更好。
x.push.apply(x,y)
为我解决了它,特别是第二种
x
,尽管我不明白为什么会这样
// original array
var r = ['a','b','c'];

function test(r){
  var arr = ['d','e','f'];
  r.push.apply(r, arr);

  /*
  More Code
  */
  return r;
}
var result = test( r );
console.log( r ); // ["a", "b", "c", "d", "e", "f"]
console.log( result === r ); // the returned array IS the original array but modified