2015-11-05 27 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