运算符比较 returns 错误值

Operator comparison returns wrong value

我在编程方面有一些很好的经验,但我是 Javascript 的新手。我 运行 通过 if 函数中的比较得出了意想不到的结果。 在下面的函数中,if.function 中有一个双重比较。当 .name 已经在列表中时,第一次比较预计 return 为假。但是其中一个测试 return 是一个工作日出现两次的集合。 在调试器中,比较 ls.name != MPopArray[0].name returns 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 到 return 一个错误条件。

结果return由函数编辑

 ["Saturday", "Saturday"]

您可以对数组进行排序,取一个索引来比较以下项目 traffic 并将实际名称推送到结果集中。

function mostPopularDays(week) {
    var index = 0,
        result = [];

    week.sort((a, b) => b.traffic - a.traffic);

    while (index < week.length && week[0].traffic === week[index].traffic) {
        result.push(week[index++].name);
    }

    return result;
}

var test1MPD = [{ name: 'Thursday', traffic: 100 }, { name: 'Friday', traffic: 100 }, { name: 'Saturday', traffic: 101 }];

console.log(mostPopularDays(test1MPD));