2017-08-15 14 views
-3

array1 = [4, 5, 6, 7, 4, 5];array2 = [4, 5]があります。配列内の一致を見つける

そしてarray1にarray2をマッチさせ、一致した回数を出力したいと思います。

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

はこれですこれまでに成し遂げたことは何ですか? – Observer

+0

何を試しましたか?両方の配列に存在するので、4と5は両方の配列の0と1の位置にあるので結果は2ですか?本質的に必要なのは、お互いに2つのループがあります。 – h2ooooooo

+0

試しましたが失敗しました – xF4B

答えて

3

ネストループを使用して、両方の配列の各インデックスを互いに比較する必要があります。

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

何が交差点と呼ばれるために求めています。試合の数だけに興味がある場合は、この関数でトリックを行う必要があります:

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

質問には以下のコードを使用できます。

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

あなたは、各指標を比較したい場合は、次の

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

あなたはセットを通じて1を統一することがあり、両方の配列に存在する全ての要素をカウントしたい場合:

function match(arr1,arr2){ 
    var set = new Set(arr2); 
    return arr1.filter(el => set.has(el)).length; 
} 
関連する問題