代码之家  ›  专栏  ›  技术社区  ›  dennismonsewicz

短语的javascript搜索字符串

  •  1
  • dennismonsewicz  · 技术社区  · 14 年前

    我抓取用户输入(使用jQuery),然后循环一个数组,并查看数组中是否存在一个短语在用户输入中。如果找到了,我会弹出一个警告框告诉他们找到了。但由于某种原因它不起作用。

    submit = false;
    
                for(i in keyphrases_array) {
                    if(english_text.indexOf(keyphrases_array[i]) != -1) {
                        if(trans_text.indexOf(keyphrases_array[i]) != -1) {
                            submit = false;
                        }
                    } else {
                        submit = true;
                    }
                }
    

    keyphrases_array 是在另一个函数中设置的全局数组。

    如果在我的数组中有短语“Hello World”,并且我的脚本在 english_text 变量,然后检查用户提交的文本( trans_text 传输文本

    2 回复  |  直到 12 年前
        1
  •  3
  •   user113716    14 年前

    首先,你不应该使用 for/in 在数组上迭代。使用普通的 for 循环。

    问题可能是 submit

    submit = false;
    
    for(var i = 0; i < keyphrases_array.length; i++) {
        if(english_text.indexOf(keyphrases_array[i]) != -1) {
              if(trans_text.indexOf(keyphrases_array[i]) != -1) {
                      // return immediately
                    return false;
              }
         } else {
               submit = true;
         }
    }
    return submit;
    

    或者,如果需要更多的处理,您可以中断循环:

    submit = false;
    
    for(var i = 0; i < keyphrases_array.length; i++) {
        if(english_text.indexOf(keyphrases_array[i]) != -1) {
              if(trans_text.indexOf(keyphrases_array[i]) != -1) {
                   submit = false;
                   break;
              }
         } else {
               submit = true;
         }
    }
    

    编辑: 根据你的评论,你似乎想 return false 发现于 trans_text . 这意味着测试应该使用 == != .

          if(trans_text.indexOf(keyphrases_array[i]) == -1) {
                  // return immediately
                return false;
          }
    
        2
  •  1
  •   dpmguise    14 年前

    如果文本只在英文版本中,则前面的代码将返回true,如果文本同时在两个版本中,则只需要传递true。-我明白了吗?

     submit = false;
    
                    for(i in keyphrases_array) {
                        if(english_text.indexOf(keyphrases_array[i]) != -1 && trans_text.indexOf(keyphrases_array[i]) != -1) {
                                submit = true;
                            }
                        } else {
                            submit = false;
                        }
                    }
    

    编辑:切换为真/假以匹配问题