0

我有一个示例代码:

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

当我运行代码时,结果 2 alert( alert('Yes') and alert('No')),但结果只是alert('Yes'),如何修复它?

4

3 回答 3

1

这可以通过以下方式简单地完成.indexOf

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

    alert('Yes');

} else {

    alert('No');

}

将其替换为不包括变量声明的整个代码。

于 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 回答