二维数组javascript的forEach()和Apply()方法

jac*_*i_g 3 javascript arrays foreach multidimensional-array

我有一个数组,哪些元素也是数组,每个数组包含3个元素.我想function calcMe(a,b,c){...}使用forEach()方法调用我的主数组的每个元素,但我真的很困惑,不知道如何让它工作.

arr = [[1,5,4],[8,5,4],[3,4,5],[1,2,3]]
function calcMe(a,b,c){...}
arr.forEach(calcMe.Apply(-----,-----));
Run Code Online (Sandbox Code Playgroud)

如何使用每个内部数组的元素作为参数传递给我的函数Apply()

Ori*_*iol 5

apply立即调用函数,因此您不能直接使用它,因为forEach需要函数引用.但是,您可以使用bindon apply来实现您想要的效果:

arr.forEach(Function.apply.bind(calcMe, void 0));
Run Code Online (Sandbox Code Playgroud)

第二个参数将是this值.你可以提供任何价值而不是void 0.

var arr = [[1,5,4],[8,5,4],[3,4,5],[1,2,3]];
function calcMe(a,b,c){
  document.querySelector('pre').textContent += [a,b,c] + '\n';
}
arr.forEach(Function.apply.bind(calcMe, void 0));
Run Code Online (Sandbox Code Playgroud)
<pre></pre>
Run Code Online (Sandbox Code Playgroud)

  • @JuanMendes由于`Function`是一个函数,它继承自`Function.prototype`.所以`Function.apply`是`Function.prototype.apply`的快捷方式. (2认同)