我不明白为什么temp
变量只返回false。我试过==
只是为了看看是否使用严格的比较是问题,但它没有改变。只是为了仔细检查,我通过在控制台中打印它们的类型来确保变量属于同一类型。
正在发生的另一件奇怪的事情是,当我使用这一行 console.log('temp = ' + temp);
来查看temp
内部的内容时,只会打印一个空格。但是,如果我使用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);
}
此脚本的结果:
有人可以帮忙解释一下我在做什么吗?如果您需要更多信息,请告诉我。
编辑:
答案 0 :(得分:1)
您希望检查表单(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
data
个与forData
值匹配的值,请使用filter
var matchedData = data.filter( s => s[5].trim().toUpperCase() === upFormData );