Ich versuche, ein Array mit der Methode .includes () zu durchsuchen. Ich möchte nicht, dass ein Element, das sich tatsächlich im Array befindet, aufgrund der Groß- und Kleinschreibung mit der Methode .includes () unentdeckt bleibt. Daher versuche ich, .toUpperCase () in Verbindung mit .includes () zu verwenden.

Ich verstehe nicht, warum mein Code nicht funktioniert.

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

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

Ich gehe davon aus, dass mit dem obigen Code true in das Dokument geschrieben wird. Es ist jedoch nichts geschrieben. Wenn ich die Methode .toUpperCase () wie erwartet vollständig entferne, wird false in das Dokument geschrieben, da der Betreff der Suche 'FRANCE' nicht mit 'France' identisch ist, einem tatsächlichen Element des Arrays.

0
Jevon Cochran 18 Jän. 2019 im 06:57

4 Antworten

Beste Antwort

.toUpperCase() kann nur für Zeichenfolgen verwendet werden und nicht für das gesamte Array, das Sie erstellt haben. Verwenden Sie map und capitalise die Zeichenfolgen im Array und überprüfen Sie dann mit

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

var findCountry = euroTour.map((e)=>e.toUpperCase()).includes('FRANCE');
console.log(findCountry)
1
ellipsis 18 Jän. 2019 im 04:01

includes bietet keine Option, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird. Sie können some in Verbindung mit einem regulären Ausdruck ohne Berücksichtigung der Groß- und Kleinschreibung verwenden, um das zu erreichen, was Sie möchten:

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

console.log(euroTour.some(country => /^france$/i.test(country)))
0
ic3b3rg 18 Jän. 2019 im 04:01
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'));
1
t.klein 18 Jän. 2019 im 04:16

Sie verwenden toUpperCase() für das Array euroTour, was nicht gültig ist - es ist nur mit Zeichenfolgen möglich. Zuerst map das Array in Großbuchstaben:

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

Dann können Sie .includes() verwenden:

euroTour.includes("FRANCE");

Demonstration:

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

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

var findCountry = euroTour.includes("FRANCE");
0
Jack Bashford 18 Jän. 2019 im 04:03