2016-08-08 18 views
1

Kennt jemand eine Möglichkeit, um zu überprüfen, ob eine Liste eine Zeichenfolge ohne Verwendung von indexOf enthält? In meinem Array können einige Strings Teile von anderen enthalten, so dass indexOf falsche Positive erzeugt.Javascript-Liste enthält eine Zeichenfolge

Als Beispiel, wie würde ich feststellen, ob "Komponente" im Array unter ist?

["component.part", "random-component", "prefix-component-name", "component"] 

Update:

Es scheint, wie meine Verwendung von falsch-positiven war irreführend. Ich meinte damit, dass die Komponente 4 mal drin war, wenn ich die Saite alleine anpassen möchte.

dh. Es sollte false zurückgeben, wenn im folgenden Array nach dem Vorhandensein von "component" gesucht wird.

["component.part", "random-component", "prefix-component-name"] 
+1

IndexOf werden Sie nicht falsch positiven geben. Es wird Ihnen 3 geben. Wenn Sie alle Elemente finden wollen, die "othertuff componenet" haben, können Sie Ihr Array durchlaufen und mit 'String.includes()' –

Antwort

3

Verwenden Sie die API Array.find.

Beispiel:

"use strict"; 
 

 
let items = ["component.part", "random-component", "prefix-component-name", "component"]; 
 

 
let found = items.find(item => { return item === "component.part" }); 
 

 
if (found) { 
 
    console.log("Item exists."); 
 
}

Weitere Anwendungsbeispiel.

See: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find

+0

überprüfen. Ich denke, er will alle Elemente finden, die "Komponente" enthalten. –

+0

@YasinYaqoobi die Frage ist ein wenig unklar und es klingt wie die Anforderung war, den Fehler nach Elementen zu suchen, die das Wort Komponente in ihnen haben. Ich habe eine andere Lösung hinzugefügt, die das tut. Siehe unten. –

+0

Ich habe mich anscheinend selbst unklar gemacht, ich wollte nur die exakte Zeichenfolge "Komponente" abgleichen. Das Beispiel sollte zeigen, warum ich indexOf nicht einfach benutzen konnte. – annedroiid

2

Eine Möglichkeit ist .find() zu verwenden, um die Zeichenfolge, die Sie aus dem Array erhalten möchten.

1

Versuchen $ .inArray() Methode verwendet.

var list=["component.part", "random-component", "prefix-component-name", "component"]; 
if($.inArray(" component",list) != -1){ 
    console.log("Item found"); 
} 
0

Kennt jemand eine Möglichkeit, zu überprüfen, ob eine Liste einen String enthält, ohne indexOf zu verwenden? In meinem Array können einige Strings Teile von anderen enthalten, so dass indexOf falsche Positive erzeugt.

falsch positive? Array.prototype.indexOf und Array.prototype.includes beide verwenden strenge Gleichheit, die das hier unmöglich macht.

-1

IndexOf wird Ihnen kein falsches positives Ergebnis geben. Es wird Ihnen 3 geben. Wenn Sie alle Elemente finden möchten, die "otherstuff componenet" haben, können Sie Ihr Array durchlaufen und mit String überprüfen. Includes()

Hier ist eine anfängerfreundliche Lösung.

var arr = ["component.part", "random-component", 
 
    "prefix-component-name", "component", "asdf"]; 
 
    
 
    console.log(arr.indexOf('component')); // give u 3 
 
    
 
    for (var i = 0; i < arr.length; i++){ 
 
     if (arr[i].includes('component')){ 
 
     console.log(arr[i]); 
 
     } 
 
    }

Verwandte Themen