【发布时间】:2020-02-24 15:13:03
【问题描述】:
我在编程方面有一些很好的经验,但我是 Javascript 新手。在 if 函数中进行比较时,我遇到了意外的结果。
在下面的函数中,if.function 中有一个双重比较。当 .name 已经在列表中时,第一次比较预计会返回 false。但是其中一个测试返回一个工作日出现两次的集合。
在调试器中,比较 ls.name != MPopArray[0].name 返回 true 基本上说 "Saturday"!="Saturday" 是 TRUE。所以我的问题是它是如何得到这个结果的?
function mostPopularDays(week) {
week.sort(function (a,b) {return b.traffic-a.traffic})
var highestTraffic = week[0].traffic
var MPopArray = []
MPopArray[0] = week[0].name
for (const ls of week) {
if ((ls.name != MPopArray[0].name) && (ls.traffic==highestTraffic)) {
MPopArray.push(ls.name)
}
}
return MPopArray
}
该函数遍历一周并确定一周中哪一天的流量最高。如果一周中多于一天的流量相同,则将这一天附加到列表中。(例如 ["Wednesday", "Thursday"])。
中的第一个条件测试数据集
var Test1MPD = [
{ name: 'Thursday', traffic: 100 },
{ name: 'Friday', traffic: 100 },
{ name: 'Saturday', traffic: 101 }
];
var Test1ResultMPD = mostPopularDays(Test1MPD)
console.log(Test1MPD)
console.log(Test1ResultMPD)
在我使用的测试数据集上,我期望 ls.name != MPopArray[0].name 返回错误条件。
函数返回的结果
["Saturday", "Saturday"]
【问题讨论】:
-
week[0].name是一个字符串,那么它不能包含name属性。只需比较ls.name != MPopArray[0]。 -
那行得通。我没有正确引用数组。
标签: javascript comparison operator-keyword