2016-08-09 11 views
0

ループ内にユーザーが指定した文字列が存在するかどうかをテストするためにループしている配列があります。ループを実行してチェックを実行すると、一致する配列項目でtrueを返し、一致しない配列項目でfalseを返します。私はこれがそれぞれの配列項目のチェックをしているからです。私の質問は、文字列が配列項目と一致する場合にのみ私はどのように真を得るのですか?forループ内でif節とelse節の両方を実行しないようにするにはどうすればよいですか?

var string = "a"; 
var array = ["a", "b", "c"]; 
for(var i = 0; i < array.length; i++){ 
    if(string == array[i]){ 
     console.log("Exists"); 
    } 
    else{ 
     console.log("Doesn't exist"); 
    } 
} 

私はこれを実行した場合、私が見るであろう:

"Exists" "Doesn't exist" "Doesn't exist"

+0

あなたは真=見つかった後、私は休憩を追加することになり、ブレークキーワード –

答えて

4

あなたがES6のincludes()を使用してそれを行うことができ、

var str = "a"; 
var arr = ["a", "b", "c"]; 
var res = arr.includes(str); 
if(res) console.log("exists"); 

そして、あなたが関係している場合ブラウザのサポートについては、indexOf()

var str = "a"; 
var arr = ["a", "b", "c"]; 
var res = (arr.indexOf(str) > -1); 
if(res) console.log("exists"); 
0

試してみてください。

var string = "a"; 
var array = ["a", "b", "c"]; 
var found = false; 
for(var i = 0; i < array.length; i++){ 
    if(string == array[i]){ 
     found = true; 
     break; 
    } 
} 
if (found === true){ 
    console.log("Exists"); 
} 
else{ 
    console.log("Doesn't exist"); 
} 
+3

を使用する必要があります。そうしないと、答えが見つからず処理時間が無駄になっても、アレイ全体がループします。 – JQluv

+0

良い点。編集されましたが、実際にはindexOfはおそらくより良い解決策です。 –

0

あなただけのアイテムを照合得るためにArray.filterを使用することができます。

var string = "a"; 
var array = ["a", "b", "c"]; 

var matches = array.filter(function(item) { 
    return item === string; 
}); 

それともES6

var matches = array.filter(item => item === string); 

あなただけのtrueをたい場合は、/ Array.someを使用することができますfalse

array.some(item => item === string); // true 
array.some(item => item === 'foo'); // false 
1

それは、それは最初の真の値を返したら.forEach().filter()は、アレイ全体たびに繰り返されます一方.some()は、実行を停止することに注意することが重要です.some()方法

を使用してください。これは、配列のサイズに応じてパフォーマンスに重大な影響を及ぼします。あなたはfor..ofループを使用することができます

var string = "a"; 
var array = ["a", "b", "c"]; 
var exists = array.some(function (elem, index) { 
    return string == elem; 
}); 
if (exists) { 
    console.log("Exists"); 
} 
else { 
    console.log("Doesn't Exist"); 
} 
0

break

var string = "a"; 
 
var array = ["a", "b", "c"]; 
 
for (let prop of array) {if (prop === string) {console.log("Exists"); break;}};

関連する問題