gpt4 book ai didi

JavaScript 类型错误 : callback is not a function - how do i fix this?

转载 作者:行者123 更新时间:2023-12-03 02:37:46 25 4
gpt4 key购买 nike

我该如何解决这个问题?

问题是这样的:

实现一个函数“mapById”,当给定一个对象数组时,该函数返回一个对象,其中键是输入对象的 id,值是相应的输入对象。

例如:

mapById([{id: 102, name: "Alice"},
{id: 205, name: "Bob", title: "Dr."},
{id: 592, name: "Claire", age: 32}]);

返回:

{
102: {id: 102, name: "Alice"},
205: {id: 205, name: "Bob", title: "Dr."},
592: {id: 592, name: "Claire", age: 32}
}

var key = 回调(item); ^类型错误:回调不是函数

function mapById(list, callback) {
var obj = {};
list.forEach(function(item) {
var key = callback(item);
if (obj[key]) {
obj[key] = obj[key].concat(item);
} else {
obj[key] = [item];
}
});
return obj;
}

console.log(mapById(input));

最佳答案

问题:

您遇到的错误是,当您定义该函数时,您给了它两个参数:listcallback

function mapById(list, callback) {}

但是,当您调用该函数时,您只给了它一个参数:input

console.log(mapById(input));

因此,当您的代码执行并到达函数的这一部分时,它会抛出异常,因为回调是未定义的,因为您没有传递第二个参数。

解决方案:

很多方法可以解决您的问题。一种解决方案是在首次声明 mapById 时简单地在内部调用回调。

然后移动代码逻辑,当您CALLma​​pById时,NOT返回对象作为第二个参数当你声明它时。

例如

function mapById(list, callback) {
var obj = {};
return callback(item);
}

console.log(mapById(input, function() {
// logic goes here
}));

请注意,我个人不会以这种方式构建它,因为回调是不必要的,但我将向您展示如何通过回调来完成它。

关于JavaScript 类型错误 : callback is not a function - how do i fix this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com