This question already has answers here:
Array forEach pass “push” as argument
(2个答案)
2年前关闭。
例如:
是的,我想将元素从
如果这是重复的问题,请原谅。我是Stackoverflow的新手。
即向数组添加三个值,这正是您看到的结果:
我想您只是想推送第一个参数,在这种情况下,您必须仅将第一个参数传递给调用
(2个答案)
2年前关闭。
例如:
> 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
的函数。关于javascript - 为什么aryB.forEach(aryA.push.bind(aryA))在JavaScript中不起作用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42642563/
10-12 13:18