Javascript if 语句在本应为真时返回假

Javascript if statement come back false when it should be true

我不明白为什么 temp 变量只返回 false。我试过 == 只是想看看使用严格比较是否是问题所在,但它没有改变。只是为了仔细检查,我通过在控制台中打印变量的类型来确保变量的类型相同。

发生的另一件奇怪的事情是,当我使用这一行时,console.log('temp = ' + temp); 来查看 temp 中的内容,除了空白 space 之外什么都不会打印。但是如果我使用 console.log(temp);,它会打印存储在 temp. 中的内容 console.log('temp = ' + temp); 似乎已经自行修复,所以不要管那个问题,但它仍然没有返回真值。

var upFormData = formData.toUpperCase();
console.log('Form Data: ' + upFormData);
degrees[str] = [];
degrees[str][0] = data[0];

for(var i = 1; i < data.length; i++)
{
    var temp = data[i][5].toUpperCase();
    console.log(temp);
    //console.log('temp = ' + temp);
    console.log('upFormData = ' + upFormData + ' ' + typeof upFormData + ' ' + typeof temp);

    if(upFormData === temp)
    {
        console.log('MATCH');
    }
    else
    {
        console.log('NOT A MATCH');
        //console.log(temp);
        //console.log('upFormData = ' + upFormData + ' ' + typeof upFormData + ' ' + typeof temp);
    }

此脚本的结果:

有人可以帮忙解释一下我没有做什么吗?如果您需要更多信息,请告诉我。

编辑:

您似乎想检查表单 (formData) 中输入的值是否在 data 数组中。

使用some

var upFormData = formData.trim().toUpperCase();
var hasFormData = data.some( s => s[5].trim().toUpperCase() === upFormData ); //hasFormData will return true if any value matches

如果您想 filter 输出与 forData 值匹配的 data 值,请使用 filter

var matchedData = data.filter( s => s[5].trim().toUpperCase() === upFormData );