Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
indexOf在javascript中没有获得准确的值_Javascript - Fatal编程技术网

indexOf在javascript中没有获得准确的值

indexOf在javascript中没有获得准确的值,javascript,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) { a

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

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");
            }
        }
    }
函数检查(){
var值='I III';
var Opt=新数组(“I”、“II”、“III”、“IV”);
对于(变量i=0;i-1){
警惕(“你好”);
}
}
}

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

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

var值='I III'。拆分(“”)
var期权=['I'、'II'、'III'、'IV']
options.forEach(函数(选项){
var index=value.indexOf(选项)
如果(索引!=-1){
//一般不要使用“document.write”;它在堆栈片段中非常有用
document.write(索引+':'+值[索引])
文档。写入(“
”) }
})
这是获取ans的另一种方法

函数检查(){

var值='I III'。拆分(“”);var Opt=[“I”、“II”、“III”、“IV”];
对于(变量i=0;i-1){
警惕(“你好”);
}
}
}检查();

可以将值按空格分割,然后计算数组的差值。结果将是在字符串中找不到项。它应发出3次警报,但发出2次警报是不正确的。因为
“II”
确实在字符串中
“III”
。II存在于字符串中。因此,给定字符串中有三个匹配项。可以使用正则表达式获得精确匹配项。
    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();