为了账号安全,请及时绑定邮箱和手机立即绑定

第 4 行的类型错误:回调不是函数 JavaScript 回调

第 4 行的类型错误:回调不是函数 JavaScript 回调

蛊毒传说 2022-10-27 16:48:55
我创建了一个 forEach 函数,它接受一个数组和一个回调函数,并在数组的每个元素上运行回调。forEach 函数不返回任何内容。还使用了一个单独的辅助函数映射。function forEach(array, callback) {  for (let i = 0; i < array.length; i++) {    callback(array[i]);  }}function map(array, callback) {  let newArr = []  forEach(array, newArr.push(callback));  return newArr;}console.log(typeof forEach); // should log: 'function'forEach(['a', 'b', 'c'], i => console.log(i)); // should log: 'a', 'b', 'c'console.log(typeof map); // should log: 'function'console.log(map([3, 4, 5], n => n - 2)); // should log: [1, 2, 3]我收到以下错误:第 4 行的类型错误:回调不是一个函数 我非常接近解决问题,但似乎无法弄清楚如何使用 forEach 函数调用在第 9 行。上面的所有测试用例都通过了,除了最后一个。
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

将您的功能更改map为:


function map(array, callback) {

   let newArr = []

   forEach(array, (value) => newArr.push(callback(value)));

   return newArr;

}


查看完整回答
反对 回复 2022-10-27
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

问题出在forEach(array, newArr.push(callback));. 尝试将第二个参数 , 包装newArr.push(callback)箭头函数表达式中。结果行将是forEach(array, () => newArr.push(callback));.

这是一个工作示例。查看控制台日志。

祝你好运!


查看完整回答
反对 回复 2022-10-27
?
呼唤远方

TA贡献1856条经验 获得超11个赞

您只需要编写return array.map(callback);它就可以了。

由于Array.prototype.map() map接受callbackasparameter并且您已经具有callbackas 功能parameter。你需要做的就是return array.map(callback);

同样,您可以使用Array.prototype.forEach()。但forEach不返回任何东西,所以你不能写return array.forEach(callback);。取而代之的是,您需要将其用作array.forEach(callback);.

function forEach(array, callback) {

  array.forEach(callback);

}


function map(array, callback) {

  return array.map(callback);

}


console.log(typeof forEach); // should log: 'function'

forEach(['a', 'b', 'c'], i => console.log(i)); // should log: 'a', 'b', 'c'

console.log(typeof map); // should log: 'function'

console.log(map([3, 4, 5], n => n - 2)); // should log: [1, 2, 3]


查看完整回答
反对 回复 2022-10-27
  • 3 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信