例如:
> var aryA = [];
undefined
> var aryB = [1, 2, 3];
undefined
> aryB.forEach(aryA.push.bind(aryA));
undefined
> aryA
[1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]]
是的,我想将元素从 aryB
复制到 aryA
。我当然有其他的解决办法,但是为什么这个方法不行呢?
如果这是一个重复的问题,请原谅。我是 Stackoverflow 的新手。
嗯,它确实“有效”。 .forEach
将三个参数传递给回调:
- 当前数组元素
- 当前数组元素的索引
- 数组本身(即
.forEach
被调用)
由于您将 push
作为回调传递,因此您实质上是在每次迭代中执行以下调用:
aryA.push(aryB[i], i, aryB);
即将三个值添加到数组中,这正是您所看到的结果:
[1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]]
^ ^ ^ ^ ^ ^
| | array | | array
| 1. index | 2. index ...
1. element 2. element
我猜你只想压入第一个参数,在这种情况下你必须传递一个函数调用 .push
只有第一个参数。