将.toUpperCase()与.includes()结合使用

时间:2019-01-18 03:57:17

标签: javascript case-sensitive

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

我不明白为什么我的代码无法正常工作。

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

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

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

4 个答案:

答案 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");