2015-11-05 26 views
1

我正在尝试在javascript someMathArray(x) { }中创建高阶函数,该函数返回一个函数并接受另一个参数。我希望函数采用原始数组,例如[1,2,3,4],然后应用另一个函数,例如名为mult2(a) { return a*2 }(但是,我希望这适用于我传入的任何函数。我不想将mult2(a)硬编码到函数),然后返回一个数组,其中包含[2,4,6,8]在javascript中使用数组的高阶函数

回答

1

类似这样的东西?

function someMathArray(array) { 
 
    return function(fun) { 
 
    return array.map(fun); 
 
    }; 
 
} 
 

 
var fun = someMathArray([1,2,3,4,5]); 
 
var output = fun(function(a) { return a*2; }); 
 
document.getElementById('output').innerHTML = JSON.stringify(output);
<div id="output"></div>

function someMathArray(array) { 
 
    return array.map.bind(array); 
 
} 
 

 
var fun = someMathArray([1,2,3,4,5]); 
 
var output = fun(function(a) { return a*2; }); 
 
document.getElementById('output').innerHTML = JSON.stringify(output);
<div id="output"></div>

+0

谢谢!我在包装高阶功能的工作方面遇到了困难,但你的回答帮助我理解他们真正在做什么。 – ilikecake1

+0

我将如何处理数组为空的情况? – ilikecake1

+0

@ ilikecake1'[] .map(function(a){return a * 2;})'将返回空数组。 – jcubic