Значения идентичны, но не равны

#javascript #date #debugging #boolean

#язык JavaScript #Дата #отладка #логический

Вопрос:

Изображение значений моего массива У меня есть функция «Ср. 12/8» и «Ср.12/8». Однако, когда я использую их в этой функции, они по какой-то причине не равны, но все же идентичны. Функция не добавляется и действует так, как будто они совершенно разные.

 function filterDate() {  for (var i = 0; i lt; dateList.length; i  ) {  if(dateList[i] == today) {  appendItem(filteredDate, dateList[i]);  appendItem(filteredID, stateID[i]);  appendItem(filteredCase, totalCases[i]);  appendItem(filteredState, usState[i]);  }  } }  

Вот код даты получения.

 //Date var now = new Date();  //Gets the current days date var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; var months = ['1','2','3','4','5','6','7','8','9','10','11','12']; var weekday = days[now.getDay() - 1]; var day = now.getDate() - 1; var month = months[now.getMonth()]; var today = weekday   " "   month   "/"   day;  //Console logs todays date console.log(today);  

Значения точно такие же, но компьютер думает, что это не так. Когда я сегодня вручную меняю «Ср.12/8», это работает, но переменная, похоже, все испортила, хотя я могу ошибаться. Что происходит и как мне это исправить, поскольку это имеет решающее значение для моей программы?

Ответ №1:

Проблема должна заключаться в том, как вы заполняете массив списков дат. Вы уверены, что он тоже заполняется строками, а не, например, объектами даты? Предоставленный вами код не показывает ничего, связанного с этим массивом.

Правка: Основываясь на изображении, которое вы предоставили позже, я думаю, что проблема будет заключаться в том, что ваши строки в массиве содержат кавычки.

Снимите их со струн. (Например, вырезав из него первый и последний символы в filterDate функции)

 function filterDate() {  for (var i = 0; i lt; dateList.length; i  ) {  if(dateList[i].slice(1,-1) == today) {  appendItem(filteredDate, dateList[i]);  appendItem(filteredID, stateID[i]);  appendItem(filteredCase, totalCases[i]);  appendItem(filteredState, usState[i]);  }  } }  

Комментарии:

1. Я заполняю его var dateList = getColumn("COVID-19 Cases per US State", "Date"); и обновил вопрос скриншотом столбца даты.

2. Я соответствующим образом обновил свой ответ, надеюсь, он вам поможет.