使用javascript比较数组中的值时出错?

时间:2012-12-10 01:49:45

标签: javascript

我有一个示例代码:

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('Yes') and alert('No')),但结果只是alert('Yes'),如何修复它?

3 个答案:

答案 0 :(得分:1)

只需使用.indexOf

即可完成此操作
if ( find.indexOf( search ) > -1 ) {

    alert('Yes');

} else {

    alert('No');

}

将此替换为的全部代码,不包括变量声明。

答案 1 :(得分: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');
}

答案 2 :(得分: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');
 }

请注意:可能有更好的方法,但只能按照您的算法尝试帮助。