结合使用 .toUpperCase() 和 .includes()

Using .toUpperCase() in conjunction with .includes()

我正在尝试使用 .includes() 方法搜索数组。由于区分大小写,我不希望使用 .includes() 方法未检测到确实在数组中的元素。因此,我试图将 .toUpperCase() 与 .includes()

结合使用

我不明白为什么我的代码不起作用。

var euroTour = ["France", "the Netherlands", "the UK", "Spain",
                "Portugal"];

var findCountry = euroTour.toUpperCase().includes('FRANCE');

我希望使用上面的代码,将 true 写入文档。然而,什么也没写。当我完全删除 .toUpperCase() 方法时,正如预期的那样,false 被写入文档,因为搜索的主题 'FRANCE' 与数组的实际元素 'France' 不同。

includes 不提供不区分大小写的选项。您可以将 some 与不区分大小写的正则表达式结合使用来完成您想要的:

var euroTour = ["France", "the Netherlands", "the UK", "Spain", "Portugal"]

console.log(euroTour.some(country => /^france$/i.test(country)))

.toUpperCase() 只能用于字符串,不能用于我们正在做的整个数组。使用 map 和 capitalise 数组中的字符串,然后用

检查
.includes

var euroTour = ["France", "the Netherlands", "the UK", "Spain",
                "Portugal"];

var findCountry = euroTour.map((e)=>e.toUpperCase()).includes('FRANCE');
console.log(findCountry)

您在数组 euroTour 上使用 toUpperCase(),这是无效的 - 它只能用于字符串。首先map数组转大写:

euroTour = euroTour.map(e => e.toUpperCase());

然后你可以在上面使用 .includes():

euroTour.includes("FRANCE");

示范:

var euroTour = ["France", "the Netherlands", "the UK", "Spain",
  "Portugal"
];

euroTour = euroTour.map(e => e.toUpperCase());

var findCountry = euroTour.includes("FRANCE");

var euroTour = ["France", "the Netherlands", "the UK", "Spain", "Portugal"];


var findCountry = euroTour
  .map(country => country.toUpperCase())
  .includes('FRANCE');
 
console.log(findCountry);
 
 // A More General Solution
 
 function includesStrCaseInsensitive(arr, str){
  return arr
    .map(i => i.toUpperCase())
    .includes(str.toUpperCase());
}

console.log(includesStrCaseInsensitive(euroTour, 'FRANCE'));

console.log(includesStrCaseInsensitive(euroTour, 'FrANCE'));