简体   繁体   English

返回功能 - 没有记录到控制台

[英]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()为每个数组元素执行一次回调函数; unlike every() and some() 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM