[英]Returning a Function - Nothing logging to the console
I am having trouble seeing where I have gone wrong in writing this 'transformArray' function. 我在编写这个'transformArray'函数时遇到了问题。 I am trying to make it take in a function as an argument, apply it to each element of some array.
我试图让它作为一个参数的函数,将它应用于某个数组的每个元素。 Why does it not return anything?
为什么它不返回任何东西?
var array1 = [1,2,3,4,5];
function transformArray (aFunction) {
return function (array) {
return array.forEach(aFunction);
};
}
var halve = transformArray(function (num) {return num/2;});
console.log(halve(array1));
That's because Array.forEach
is an iterator. 那是因为
Array.forEach
是一个迭代器。 It always returns undefined
. 它总是返回
undefined
。
MDN:
forEach()
executes the callback function once for each array element;MDN:
forEach()
为每个数组元素执行一次回调函数; unlikeevery()
andsome()
it, always returns the value undefined .与
every()
和some()
它始终返回undefined值 。
What you need is Array.map
你需要的是
Array.map
The
map()
method creates a new array with the results of calling a provided function on every element in this array.map()
方法创建一个新数组 ,其结果是在此数组中的每个元素上调用提供的函数。
function transformArray (aFunction) {
return function(array) {
return array.map(aFunction);
};
}
(Emphasis mine) (强调我的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.