2017-06-15 2 views
0

Ich habe nur ein grundlegendes Verständnis von Codierung und hoffe auf Ihre Hilfe. Ich habe diese JS-Code mir ein wahres falsches Protokoll für alle Wursthund Vorkommen in der Anordnung geben:Matching Werte von mehreren Arrays

var myAnimal = "Sausage Dog"; 
var arrayAnimal =["Sausage Dog", "Tiger", "Sausage Dog", "Crocodile", "Lion"]; 
for (var i = 0; i < arrayAnimal.length; i++) { 
    if(myAnimal == arrayAnimal[i]) { 
    console.log("True"); 
    } else { 
     console.log("False"); 
    } 
} 

Wie würde ich die gleiche Aufgabe zu tun, wenn var myAnimal ein Array mit mehreren Strings war?

So würde es jedes Tier in myAnimal gegen jedes Tier in var arrayAnimal überprüfen und ein wahr/falsch für alle Vorkommen zurückgeben.

Gibt es eine Möglichkeit, das zu tun?

+0

[Bitte stellen keine Tags in Frage Titel] (https://stackoverflow.com/help/tagging) – Liam

Antwort

2

So etwas wie dieses: Schleife das myAnimal Array innerhalb der arrayAnimal Schleife - Überprüfung für Gleichheit.

var myAnimal = ["Sausage Dog", "Tiger"]; 
 
var arrayAnimal = ["Sausage Dog", "Tiger", "Sausage Dog", "Crocodile", "Lion"]; 
 
for (var i = 0; i < arrayAnimal.length; i++) { 
 
    for (var j = 0; j < myAnimal.length; j++) { 
 
     \t \t if(arrayAnimal[i] == myAnimal[j]) console.log('match'); 
 
    } 
 
}

+0

Vielen Dank, das ist wirklich hilfreich! Um dies auf eine abstraktere Ebene zu bringen - haben Sie auch eine Lösung dafür, wenn myAnimal ein Array mit regulären Ausdrücken anstelle der oben genannten Strings ist? –

1

ein Wörterbuch aus dem Array#reduce mit myAniml Array erstellen und dann Array#map die arrayAnimal das Wörterbuch verwenden.

var myAnimal = ["Sausage Dog", "Lion"]; 
 
var myAnimalDict = myAnimal.reduce(function(dict, str) { 
 
    dict[str] = true; 
 
    
 
    return dict; 
 
}, Object.create(null)); 
 

 
var arrayAnimal =["Sausage Dog", "Tiger", "Sausage Dog", "Crocodile", "Lion"]; 
 

 
var result = arrayAnimal.map(function(str) { 
 
    return !!myAnimalDict[str]; 
 
}); 
 

 
console.log(result);

+0

Upvoted Ihre Antwort, da es auch ein Arbeitsansatz ist. Es dauert nur ein bisschen weniger Zeit als die Schleife oben. –

+0

Es ist eigentlich O (n), und viel schneller als eine Schleife in einer Schleife O (n^2) –

+0

Ich meinte, anders herum, mein schlechtes. Bearbeiteter Kommentar. –

0
var myAnimal = ["Sausage Dog", "Tiger", "Sausage", "Crocodile", "Lion"]; 
var arrayAnimal =["Sausage Dog", "Tiger","Crocodile", "Lion"]; 
for (var i = 0; i < myAnimal.length; i++) { 
    for (var j = 0; j < arrayAnimal.length; j++) { 
     if (myAnimal[i] == arrayAnimal[j]) { 
      $('#demo').append("True</br>"); 
     } 
    } 
} 
+0

Während Code allein die Frage beantworten kann, ist es immer am besten, eine Erklärung und alle relevanten Ressourcen zu bieten. –

Verwandte Themen