2017-06-15 10 views
0

私は基本的なコーディングとあなたの助けの希望を理解しています。私は、これは私のアレイ内のすべてのソーセージ犬の出現のための真偽のログを与えるコードをJS持っている:var myAnimalは、複数の文字列の配列だった場合複数の配列からの値の一致

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"); 
    } 
} 

は私が同じタスクをどのように行うのでしょうか?

myAnimalのすべての動物をすべての動物に対して、var arrayAnimalでチェックし、すべての発生に対して真偽を返します。

これを行う方法はありますか?

+0

[質問のタイトルにタグを入れないでください](https://stackoverflow.com/help/tagging) – Liam

答えて

2

このようなもの: myAnimal配列をループ内でループして、ループが等しいかどうかをチェックします。

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

どうもありがとう、これは本当にです役に立った!これをより抽象的なレベルにする - myAnimalが上記の文字列の代わりに正規表現を持つ配列である場合、これに対する解決策もありますか? –

1

辞書を用いArray#reduceを用いmyAniml配列から辞書を作成し、Array#maparrayAnimal

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

あなたの答えをアップアップしました。上のループアプローチより少し時間がかかります。 –

+0

これは実際にはO(n)であり、ループ内にループを持つよりもはるかに速いです。O(n^2) –

+0

私は別のやりかたを意味しました。編集されたコメント。一人でコードが質問に答えるかもしれないが –

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

あり、それは同様に説明し、関連するすべてのリソースを提供するために、常に最高です。 –

関連する問題