【问题标题】:Comparing Arrays with nested loops比较数组和嵌套循环
【发布时间】:2013-07-06 12:25:14
【问题描述】:

我正在尝试将两个数组的值相互比较。如果找到匹配项 - 执行某项操作 - 否则执行此操作。

我在http://jsfiddle.net/ZvmHx/1/ 处整理了我的代码

如果您取消注释第 14 行的第二个警报,您将看到问题所在。我似乎无法阻止第二个警报触发。

谢谢!

var getkeywords = ["John","Frank","Sarah"]; 
var captionarray = ["Jim","Joe","Lee","Steve","John","Michelle","Brad"];    

for (k = 0; k < getkeywords.length; k++) {
    for (l = 0; l < captionarray.length; l++) {

    if(getkeywords[k] == captionarray[l]){

        alert('Found > ' + getkeywords[k] + ':filter image');

    }else{

        //alert('not found > ' + getkeywords[k] + ':filter image');

    }
  }
}

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    内部循环的每次迭代都会测试 if/else。我认为您所追求的是测试您是否有匹配 after 内部循环已运行。比如:

    var getkeywords = ["John","Frank","Sarah"]; 
    var captionarray = ["Jim","Joe","Lee","Steve","John","Michelle","Brad"];    
    var matchFound;
    
    for (k = 0; k < getkeywords.length; k++) {
        matchFound = false;
    
        for (l = 0; l < captionarray.length; l++) {
            if (getkeywords[k] == captionarray[l]){
                matchFound = true;
                break;
            }
        }
    
        if(matchFound){
    
            alert('Found > ' + getkeywords[k] + ':filter image');
    
        }else{
    
            alert('not found > ' + getkeywords[k] + ':filter image');
    
        }
    }
    

    【讨论】:

      【解决方案2】:

      我创建了一个新的小提琴:-

      http://jsfiddle.net/WZGyy/

      var getkeywords = ["John","Frank","Sarah"]; 
      var captionarray = ["Jim","Joe","Lee","Steve","John","Michelle","Brad"];    
      
      imagecode = '';
      var found=0;
      for (k = 0; k < getkeywords.length; k++) 
      {
          for (l = 0; l < captionarray.length; l++) 
          {
      
              if(getkeywords[k] == captionarray[l])
              {
      
      
                  found=1;
                  break;
      
              }
          }
      
          if(found==1)
          {
              alert('Found > ' + getkeywords[k] + ':filter image');
              found=0;  
      
      
          }
          else
          {
              alert('not found > ' + getkeywords[k] + ':filter image');
      
          }
      }
      

      希望对您有所帮助..

      【讨论】:

      • 谢谢阿宾西特。非常感谢!
      【解决方案3】:

      在提醒结果之前,您必须将值与第二个数组中的所有项目进行比较 我更新了你的 jsfiddle — 试试 http://jsfiddle.net/ZvmHx/5/

      var getkeywords = ["John","Frank","Sarah"]; 
      var captionarray = ["Jim","Joe","Lee","Steve","John","Michelle","Brad"];    
      
      imagecode = '';
      for (k = 0; k < getkeywords.length; k++) {
          var isExists = false;
          for (l = 0; l < captionarray.length; l++) {
              if (getkeywords[k] == captionarray[l]){                     
                  isExists = true;
                  break;
              }
          }
      
          if (isExists) {
              alert('Found > ' + getkeywords[k] + ':filter image');
          } else {
              alert('not found > ' + getkeywords[k] + ':filter image');
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        • 2020-02-16
        • 2018-05-14
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多