我正在尝试使用.includes()方法搜索数组。由于大小写敏感,我不希望使用.includes()方法无法检测到数组中确实存在的元素。因此,我尝试将.toUpperCase()与.includes()结合使用
我不明白为什么我的代码无法正常工作。
var euroTour = ["France", "the Netherlands", "the UK", "Spain",
"Portugal"];
var findCountry = euroTour.toUpperCase().includes('FRANCE');
我希望使用上面的代码将true写入文档。但是,什么也没有写。当我完全删除.toUpperCase()方法时,正如预期的那样,由于搜索“ FRANCE”的主题与“ France”(数组的实际元素)不同,因此将false写入文档。
答案 0 :(得分:1)
.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)
答案 1 :(得分:1)
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'));
答案 2 :(得分:0)
includes
不提供不区分大小写的选项。您可以结合使用some
和不区分大小写的正则表达式来完成所需的操作:
var euroTour = ["France", "the Netherlands", "the UK", "Spain", "Portugal"]
console.log(euroTour.some(country => /^france$/i.test(country)))
答案 3 :(得分:0)
您正在数组toUpperCase()
上使用euroTour
,这是无效的-只有字符串可以使用。首先将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");