indexOf没有得到javascript中的确切值

时间:2015-07-24 05:00:30

标签: javascript

我正在检查数组的特定值是否存在于字符串中。为此,我实现了以下代码

function Check() {
        var Value = 'I III';
        var Opt = new Array("I", "II", "III", "IV");
        for (var i = 0; i < Opt.length; i++) {
            if (Value.indexOf(Opt[i]) > -1) {
                alert("Hello");
            }
        }
    }

如果字符串中存在值,它应该显示警告,但问题是它显示警报3次而不是2次,因为indexOf假设II作为字符串的一部分,因为III存在于字符串中。

2 个答案:

答案 0 :(得分:6)

解决此问题的最简单方法是使用String.prototype.split分隔Value分隔符(例如,在每个空格处):

&#13;
&#13;
var value = 'I III'.split(' ')
var options = ['I', 'II', 'III', 'IV']

options.forEach(function(option) {
  var index = value.indexOf(option)
  if (index !== -1) {
    // don't use `document.write` in general; it's just very useful in stack snippets
    document.write(index + ' : ' + value[index])
    document.write('<br>')
  }
})
&#13;
&#13;
&#13;

一对夫妇注意到:

  • 不要将变量名称大写;使用camelCase表示变量,使用PascalCase表示类/ etc
  • 请勿使用new Array();而是更喜欢数组文字:[]

答案 1 :(得分:0)

这是获取ans

的另一种方法
  

功能检查(){

    var Value = 'I III'.split(" "); var Opt = ["I", "II", "III", "IV"];

    for (var i = 0; i < Opt.length; i++) {

        if (Value.indexOf(Opt[i]) > -1) {

            alert("Hello");

        }
    }
}Check();