2017-08-15 5 views
-3

J'ai array1 = [4, 5, 6, 7, 4, 5]; et array2 = [4, 5].Recherche les correspondances dans la matrice

Et je veux faire correspondre array2 dans array1 et de sortir le nombre de fois qu'il correspondait.

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

est cette tout ce que tu as accompli jusqu'ici? – Observer

+0

Qu'avez-vous essayé? Est le résultat '2' parce que 4 et 5 sont dans les positions 0 et 1 dans les deux tableaux parce qu'ils sont présents dans les deux tableaux? Essentiellement tout ce dont vous avez besoin sont deux boucles l'une dans l'autre. – h2ooooooo

+0

je l'ai essayé mais il a échoué – xF4B

Répondre

3

Vous devez utiliser une boucle imbriquée et comparer chaque index des deux matrices entre elles.

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

Qu'est-ce que vous demandez est appelé une intersection. Si vous êtes seulement intéressé par le nombre de correspondances, cette fonction devrait faire l'affaire:

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

Vous pouvez utiliser le code ci-dessous pour votre question;

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

Si vous voulez comparer chaque indice:

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

Si vous voulez compter tous les éléments qui existent dans les deux tableaux, peut unifier un à un ensemble:

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