У меня есть хороший опыт в программировании, но я новичок в Javascript. Я столкнулся с неожиданным результатом со сравнением в функции if. В приведенной ниже функции есть двойное сравнение в функции if.function. Ожидается, что первое сравнение вернет false, когда .name уже есть в списке. Но один из тестов возвращает набор, где день недели встречается дважды. В отладчике сравнение 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
}
Функция перебирает неделю и определяет, какой день недели имел наивысший трафик c. Если более одного дня недели имеет один и тот же трафик c, этот день добавляется в список (например, ["Среда", "Четверг"]). Первое условие в
наборе тестовых данных
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"]