Использование .toUpperCase () в сочетании с .include () - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь найти массив, используя метод .include (). Я не хочу, чтобы элемент, который действительно находится в массиве, не обнаруживался с помощью метода .include () из-за чувствительности к регистру. Поэтому я пытаюсь использовать .toUpperCase () в сочетании с .include ()

Я не понимаю, почему мой код не работает.

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

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

Я ожидаю, что при использовании приведенного выше кода это true будет записано в документе. Однако ничего не написано. Когда я вообще удаляю метод .toUpperCase (), как и ожидалось, в документ записывается false, поскольку предмет поиска «FRANCE» - это не то же самое, что «France», фактический элемент массива.

Ответы [ 4 ]

0 голосов
/ 18 января 2019

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'));
0 голосов
/ 18 января 2019

.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)
0 голосов
/ 18 января 2019

Вы используете 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");
0 голосов
/ 18 января 2019

includes не обеспечивает регистрацию без учета регистра. Вы можете использовать some в сочетании с регулярным выражением без учета регистра, чтобы выполнить то, что вы хотите:

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

console.log(euroTour.some(country => /^france$/i.test(country)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...