javascript搜索字符串的短语

时间:2010-11-10 23:19:11

标签: javascript

我有一个我正在制作的剧本,我有点迷失。

我获取用户输入(使用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变量中找到Hello World,那么它会检查用户提交的文本(trans_text)。如果在trans_text中找不到该短语,则该脚本应返回false。

2 个答案:

答案 0 :(得分:3)

首先,不应使用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;
      }

答案 1 :(得分:1)

如果文本仅在英文版本中,则前面的代码将返回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;
                    }
                }

编辑:切换true / false以匹配问题