2017-08-15 1 views
-3

Ich habe array1 = [4, 5, 6, 7, 4, 5]; und array2 = [4, 5].Finden Matches in Array

Und ich möchte Array2 in Array1 übereinstimmen und die Anzahl der Übereinstimmungen ausgeben.

var array1 = [4, 5, 6, 7, 4, 5]; 
var array2 = [4, 5]; 
function match(a1, a2) { 
    //matches 4,5 twice bc it is in array1 
} 

match(array1, array2) //output: 2; 
+0

ist dies alles, was du bisher erreicht hast? – Observer

+0

Was hast du probiert? Ist das Ergebnis '2', weil sich 4 und 5 in beiden Arrays in den Positionen 0 und 1 befinden, weil sie in beiden Arrays vorhanden sind? Im Wesentlichen benötigen Sie nur zwei ineinander übergehende Schleifen. – h2ooooooo

+0

Ich habe es versucht, aber es ist fehlgeschlagen – xF4B

Antwort

3

Sie müssen eine verschachtelte Schleife verwenden und jeden Index der beiden Arrays miteinander vergleichen.

var count = 0; 
for (var i = 0; i < a1.length; i++) 
{ 
for (var j = 0; j < a2.length; j++) 
{ 
    if (a1[i]==a2[j]) 
    { 
    count +=1; 
    } 
} 
} 
2

Was für Sie fragen, eine Kreuzung genannt wird. Wenn Sie nur an der Anzahl der Übereinstimmungen interessiert sind, sollte diese Funktion den Trick erfüllen:

var array1 = [4, 5, 6, 7, 4, 5]; 
var array2 = [4, 5]; 

function intersectCount(arr1, arr2) { 
    var c = 0; 
    for(const item of arr2) { 
     if (arr1.indexOf(item) != -1) c++; 
    } 

    return c; 
} 

intersectCount(array1, array2); // result: 2 
1

Sie können den folgenden Code für Ihre Frage verwenden;

var array1 = [4, 5, 6, 7, 4, 5]; 
var array2 = [4, 5]; 
function match(a1, a2) { 
    var result = []; 
    for(const item of a2) { 
     if (a1.indexOf(item) > -1) { 
      result.push (item); 
     } 
    } 
    return result.length; 
} 
1

Wenn Sie jeden Index vergleichen wollen:

var match = (arr1,arr2)=>arr1.filter((el,i)=>el === arr2[i]).length; 

Wenn Sie alle Elemente zählen möchten, die in beiden Arrays vorhanden sind, eine durch eine Reihe vereinen kann:

function match(arr1,arr2){ 
    var set = new Set(arr2); 
    return arr1.filter(el => set.has(el)).length; 
} 
Verwandte Themen