此问题已经在这里有了答案:
为我提供了以下解决方案:
var s = [23, 65, 98, 5];
Array.prototype.myMap = function(callback) {
var newArray = [];
// Add your code below this line
this.forEach(a => newArray.push(callback(a)));
// Add your code above this line
return newArray;
};
var new_s = s.myMap(function(item) {
return item * 2;
});
想法是为.map()
方法构建自己的替代品。
我的问题是了解回调部分。到目前为止,我对回调的理解是一个传递给另一个函数(作为arg)并在其他事件之后调用的函数。
我看不到另一个函数在解决方案中作为回调传递到哪里,所以我努力理解该练习,主要是:this.forEach(a => newArray.push(callback(a)));
有人可以为我澄清这一点吗?
您可以通过将调用替换为函数代码本身来轻松查看同步回调。
在您的函数调用中,callback
等于:
function(item) { return item * 2; }
如果我们将其插入此行:
this.forEach(a => newArray.push(callback(a)));
我们得到:
this.forEach(a => newArray.push(
/*item = a*/
/*return*/ a * 2;
));
或者换句话说,对于数组中的每个a
,a * 2
被推送到newArray
。