2017-10-04 66 views
0

我在解决一个JavaScript问题时被卡住了。我不明白的是如何打印出数组中数量最多的字符串。如何获得数组中数值最大的字符串?

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

问题的描述:

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

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

感谢,

+0

变种流量;流量将在for循环中未定义 – marvel308

+0

您可以定义'var result'和'var traffic'两次。当你在'for'循环中赋值给它们时,你不应该再写'var'。此外,如果您正确缩进,您的代码将更具可读性并且更容易找到错误。你可以使用像[漂亮](https://prettier.io/playground/)这样的工具来清理它。 –

+0

感谢您的评论@ marvel308和@ Rory O'Kane。我在循环中删除了'var',但它不起作用。我创建了一个[codepen demo](https://codepen.io/aaayumi/pen/eGexMw?editors=1010)。我用普瑞蒂尔修改了代码。 – aaayumi

回答

0

当您声明var traffic;然后traffic === undefined和结果相同的东西。

在for循环中,你比较week[i].traffic > traffic

它解释为week[i].traffic > undefined

30 (or any number) > undefined永远是假的,所以你永远不会设置流量或导致到任何东西,这就是为什么它返回undefined。

所以week[i].traffic > 0

而且,我看到你发表评论。你应该发送一个数组作为参数。 (不2参数)

喜欢的是:mostPopularDays([{"Wednesday" : 30 }, {"Thursday" : 20}])

代替mostPopularDays({"Wednesday" : 30 }, {"Thursday" : 20})

+0

谢谢你的评论。我根据你的建议编辑我的答案,[demo](https://codepen.io/aaayumi/pen/eGexMw?editors=1010)。它仍然不起作用。 – aaayumi

相关问题