Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript继承-询问专家对以下代码的看法_Javascript_Prototypejs - Fatal编程技术网

Javascript继承-询问专家对以下代码的看法

Javascript继承-询问专家对以下代码的看法,javascript,prototypejs,Javascript,Prototypejs,我的一个朋友正在参加一个JavaScript课程,他认为提交评分的代码是正确的。但是,分级器支持部门一直将其报告为不正确。他请求我的帮助,我在几个IDE和编辑器上测试了代码,在线和离线,每次正确的评估我都会回来。 然而,我不经常使用JavaScript,我犹豫着回答我的朋友他是对的。 如果有经验丰富的人能告诉我代码的计算结果是否正确,我将不胜感激。多谢各位 “确定一周中哪一天参观宠物店的人数最多。 如果一周中有多天具有相同的最高流量,则应返回包含这些天的数组(以任何顺序)。 (例如[星期三”,“

我的一个朋友正在参加一个JavaScript课程,他认为提交评分的代码是正确的。但是,分级器支持部门一直将其报告为不正确。他请求我的帮助,我在几个IDE和编辑器上测试了代码,在线和离线,每次正确的评估我都会回来。 然而,我不经常使用JavaScript,我犹豫着回答我的朋友他是对的。 如果有经验丰富的人能告诉我代码的计算结果是否正确,我将不胜感激。多谢各位

“确定一周中哪一天参观宠物店的人数最多。
如果一周中有多天具有相同的最高流量,则应返回包含这些天的数组(以任何顺序)。
(例如[星期三”,“星期四])。
如果输入为null或空数组,则函数应返回null。
@param week一组工作日对象
@如果只有一个最受欢迎的日期,则返回一个字符串,其中包含一周中最受欢迎的日期的名称;如果有多个最受欢迎的日期,则返回一个字符串数组,其中包含最受欢迎的日期的名称”

功能工作日(名称、流量){
this.name=名称;
这个。交通=交通;
}
函数mostPopularDays(周){
//实现这个功能!
本周=周;
if(typeof week!='object'| | week===null | | week==未定义| | week.length==0){
返回null;
}
var-maxTr=0;
var maxTrDay=[];
for(var i=0;i最大流量){
maxTrDay=[this.week[i].name];
//maxTrDay=本周[i].name;
maxTr=this.week[i]。流量;
}else if(本周[i].流量===maxTr){
//maxTrDay=[this.week[i].name];
maxTrDay.push(this.week[i].name);
}否则如果(本周长度>7){
本周班次();
}
}
如果(maxTrDay.length==1){
log(“一周中最流行的一天是:”)
返回maxTrDay[0];
}否则如果(maxTrDay>1){
log(“一周中最受欢迎的日子是:”)
返回maxTrDay;
}
返回null;
}
分级器报告为失败的测试用例如下:
1.mostPopularDays应该返回一个数组,其中一天以上的流量最受欢迎

我使用以下几行进行测试,输出总是下面最后一行(注释):

var周=[];
var sun=新的工作日(“周日”,100);星期。推(太阳);
var mon=新的工作日(“90年的星期一”);星期一推;
var tue=新的工作日('100'周二);星期二(星期二);
最多人日(周);
//[星期日、星期二]
问题是
(maxTrDay>1)
正在将数组对象与数字
1
进行比较。这对于所有阵列输入都是错误的,但令人困惑的是,例如
([2]>1)
,但是

使用提供的驱动程序按原样运行代码(在
星期二
中添加引号以避免出现
引用错误
)会产生
null的输出

您的朋友可能指的是
(maxTrDay.length>1)
,它根据长度进行比较并生成正确的输出:

The most popular days of the week were:
=> [ 'Sunday', 'Tuesday' ]

这应该是免费的,谢谢你的建议。我不知道那个地方。(这肯定会让你的草坪上有很多人…
这对所有数组输入都是错误的,除了,令人困惑的是,例如([2]>1),但这是JS给你的。
我相信
[2]
被强迫
2
是最合乎逻辑的事情,不是吗?事实上,我的朋友给我发了两个版本的代码,其中一个有
(maxTrDay.length>1)
。当他将代码发布到成绩器上时,他可能“在翻译中”丢失了代码。我也没有注意到区别……谢谢。@Ivan我认为强制类型不是一个好主意。JS的弱类型会受到很多批评,并导致各种意外行为(bug),更不用说了。我使用过的所有其他语言(PHP除外)都返回不同的类型,如
false
always(Python、Ruby)或拒绝编译(Java、C++)@ggorlen,我认为我们不能争论JavaScript是否应该有隐式强制。它是这样构建的:一种弱类型语言,永远不会改变。我认为这取决于个人偏好;)@Ivan我不是在争论JS应该或不应该有任何东西。我认为它的工作方式,即
[2]>1==true
令人困惑,应该注意和理解以避免bug。例如,如果OP的代码使用数字而不是字符串“一周中的天数”,假设条件背后的目的是检查数组中是否有多个项,那么它会意外地返回
[2]
[7]
true