如何在数组中获取编号最大的字符串?

时间:2017-10-04 19:40:57

标签: javascript arrays

我在解决一个JavaScript问题时陷入了困境。我不明白的是如何打印出数组中编号最大的字符串。

你能帮我指出我代码中的问题在哪里吗?

问题描述:

  

确定一周中哪一天访问的人数最多    宠物店。如果一周中超过一天具有相同的,最高的量    流量,应返回包含日期(以任何顺序)的数组。     (例如["星期三","星期四"])。如果输入为null或空数组,则为该函数    应该返回null。     @param周是一个Weekday对象的数组     @return一个字符串,其中包含一周中最受欢迎的一天的名称(如果只有一个最受欢迎的一天),以及包含最受欢迎日期名称的字符串数组(如果有多个最受欢迎的日期)

Codepen demo

代码:

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;
}

谢谢,

1 个答案:

答案 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})