【问题标题】:Values Identical but not equal值相同但不相等
【发布时间】:2022-01-14 14:54:45
【问题描述】:

Image of my array values我有一个“12/8 星期三”和“12/8 星期三”的功能。但是,当我在此函数中使用它们时,由于某种原因它们并不相等,但它们是相同的。该函数不附加并且表现得好像它们完全不同。

function filterDate() {
  for (var i = 0; i < 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);

这些值完全相同,但计算机认为它们不是。当我今天手动更改为“Wed 12/8”时,它可以工作,但变量似乎把它搞砸了,尽管我可能错了。发生了什么,我该如何解决这个问题,因为它对我的程序至关重要?

【问题讨论】:

    标签: javascript date debugging boolean


    【解决方案1】:

    问题应该是您填充 dateList 数组的方式。您确定它也充满了字符串,而不是日期对象吗?您提供的代码没有显示与该数组相关的任何内容。

    编辑: 根据您稍后提供的图像,我认为问题在于您的数组中的字符串包含引号。

    从字符串中删除它们。 (例如,通过在 filterDate 函数中从其中分割第一个和最后一个字符)

    function filterDate() {
      for (var i = 0; i < 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]);
        }
      }
    }
    

    【讨论】:

    • 我用var dateList = getColumn("COVID-19 Cases per US State", "Date"); 填充它,并用日期列的屏幕截图更新了问题。
    • 我相应地更新了我的答案,希望对您有所帮助。
    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多