我在解决一个JavaScript问题时陷入了困境。我不明白的是如何打印出数组中编号最大的字符串。
你能帮我指出我代码中的问题在哪里吗?
问题描述:
确定一周中哪一天访问的人数最多 宠物店。如果一周中超过一天具有相同的,最高的量 流量,应返回包含日期(以任何顺序)的数组。 (例如["星期三","星期四"])。如果输入为null或空数组,则为该函数 应该返回null。 @param周是一个Weekday对象的数组 @return一个字符串,其中包含一周中最受欢迎的一天的名称(如果只有一个最受欢迎的一天),以及包含最受欢迎日期名称的字符串数组(如果有多个最受欢迎的日期)
代码:
function mostPopularDays(week) {
if (typeof week === "undefined" || week === null || week.length === 0)
{
return null;
}
var result;
var traffic;
for (i = 0; i < week.length; i++) {
if (week[i].traffic > traffic) {
traffic = week[i].traffic;
result = week[i].name;
}
}
return result;
}
function Weekday(name, traffic) {
this.name = name;
this.traffic = traffic;
}
谢谢,
答案 0 :(得分:0)
当你声明var traffic;
然后traffic === undefined
和结果相同的事情时。
在for循环中,您比较week[i].traffic > traffic
它被解释为week[i].traffic > undefined
30 (or any number) > undefined
将始终为false,因此您永远不会将流量或结果设置为任何内容,这就是它返回未定义的原因。
所以week[i].traffic > 0
另外,我看到你发表评论。您应该发送一个数组作为参数。 (不是2个参数)
就像那样:mostPopularDays([{"Wednesday" : 30 }, {"Thursday" : 20}])
而不是mostPopularDays({"Wednesday" : 30 }, {"Thursday" : 20})