【发布时间】:2021-12-06 18:13:59
【问题描述】:
我正在尝试创建一个函数来跟踪在爱好上花费了多少小时。输入是一组爱好。我正在尝试创建一个缓存对象,其中每个爱好作为键,花费的时间作为值。我正在尝试使用一个返回函数,它接受一个表示爱好的字符串和一个表示练习多少小时的整数作为参数。
我正在尝试通过将传递的整数的值添加到与传入的“爱好”对应的键处的缓存中来更新缓存对象中的返回函数。如果没有传入返回函数的参数,我希望返回函数将缓存对象中的所有值重置为零。
这是我迄今为止尝试过的......
function hobbyTracker(hobbies) {
const cache = {};
return function(hobbies, hours) {
if (hobbies) {
cache[hobbies] += hours;
return cache;
} else {
for (let key in cache) {
cache[key] = 0;
}
return 'tracker has been reset!';
}
}
return cache;
}
我不确定如何编写“if”语句来检查是否已传入参数。我认为 .hasOwnProptery() 在这里不起作用,对吗?我的思路是因为它适用于我理解的键,而且对象尚未填充!
我也不确定应该在哪里初始化缓存对象!这是我的代码问题的一部分吗?
我也知道我的返回函数没有正确更新时间。我需要它来累积花费的总小时数,但相反,我的代码只是在新输入时覆盖它。我尝试在 cache[hobbies] = hours 上使用 +=,但后来我得到了一个由 NaN 填充的对象。
任何帮助将不胜感激!
【问题讨论】:
-
你有一些想要结果的例子吗?
-
你不能从同一个函数返回两次。
hobbyTracker()应该返回函数还是缓存?
标签: javascript arrays object key