0

I have a sample code:

var find = ['iphone 3', 'iphone 4', 'iphone 5'];
var search = 'iphone 5';
for(i=0; i<find.length; i++) {
   if(search == find[i]) {
      alert('Yes');
   } else {
      alert('No');
   }
}

When I run code, result 2 alert(alert('Yes') and alert('No')), but result exactly is only a alert('Yes'), how to fix it ?

4

3 に答える 3

1

This can be done simply with .indexOf:

if ( find.indexOf( search ) > -1 ) {

    alert('Yes');

} else {

    alert('No');

}

Replace this with the entirety of your code excluding the variable declarations.

于 2012-12-10T01:51:14.757 に答える
1

no私があなたの質問を正しく理解していれば、一致するものが見つからないときにアラートを受け取りたくないでしょう:

var find = ['iphone 3', 'iphone 4', 'iphone 5'];
var search = 'iphone 5';
for(i=0; i<find.length; i++)
{
    if(search == find[i])
    {
       alert('Yes');
       break;//stop loop, found match
    }
}

elseブランチを提供しないでください。ああ、もしあなたが古いブラウザを気にしないなら:

if (find.indexOf(search) !== -1)
{
    alert('yes');
}
于 2012-12-10T01:54:08.003 に答える
0

見つかった一致を警告したい場合は、フラグを使用して、一致が見つかった場所または一致しなかった場所をマークします。最後に、フラグを使用して、以下のようにそれぞれのメッセージを警告します。

 var find = ['iphone 3', 'iphone 4', 'iphone 5'];
 var search = 'iphone 5';
 var present = false;
 for(i=0; i<find.length; i++) {
     if(search == find[i]) {
       present = true;
       break;
     }
 }
 if(present) {
  alert('Yes');
 } else {
  alert('No');
 }

注意: より良い方法があるかもしれませんが、アルゴリズムのみに従ってヘルプを試してください.

于 2012-12-10T01:55:21.773 に答える