Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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
Javascript 在字符串数组中查找特定字符串_Javascript_Arrays_String_For Loop_Indexof - Fatal编程技术网

Javascript 在字符串数组中查找特定字符串

Javascript 在字符串数组中查找特定字符串,javascript,arrays,string,for-loop,indexof,Javascript,Arrays,String,For Loop,Indexof,在字符串数组中,如果循环发现其中一个字符串不是我们要查找的字符串,则返回false 如果没有找到不匹配的字符串,则数组是正确的,它应该返回true。即使数组没有“错误”,它也会不断返回false 我曾尝试使用indexOf,用于循环和while循环,但均未成功 function brackets() { var testArr = ['()', '{}', '()'] /* Method 1 --- returns false even when the parenthesis

在字符串数组中,如果循环发现其中一个字符串不是我们要查找的字符串,则返回
false

如果没有找到不匹配的字符串,则数组是正确的,它应该返回
true
。即使数组没有“错误”,它也会不断返回
false

我曾尝试使用
indexOf
,用于循环和while循环,但均未成功

function brackets() {
    var testArr = ['()', '{}', '()']

    /* Method 1 --- returns false even when the parenthesis are ok, I guess
    it's because the indexOf only searches for the first element that matches 
    the criteria */

    if (testArr.indexOf("()") == -1 || testArr.indexOf("{}") == -1 ||
        testArr.indexOf("[]") == -1) {
        return false
    } else {
        return true
    }

    /* Method 2 --- for loop. Same story, returns false, even when all   
    testArr[i] === any of the cases and none of them is !==, it behaves as if it was 
    false. I'm not sure why */

    for (i = 0; i < testArr.length; i++) {
        if (testArr[i] !== "()" || testArr[i] !== "{}" || testArr[i] !== "[]") {
            return false
        }
    }
    return true
}

brackets()
函数括号(){
var testArr=['()'、'{}'、'()']
/*方法1---我想,即使括号是ok,也返回false
这是因为indexOf只搜索匹配的第一个元素
标准*/
如果(testArr.indexOf(“()”)=-1 | | testArr.indexOf(“{}”)=-1||
testArr.indexOf(“[]”==-1){
返回错误
}否则{
返回真值
}
/*方法2---for loop.Same story返回false,即使所有
testArr[i]==任何情况下,如果没有一个是!==,它的行为就像是
错,我不知道为什么*/
对于(i=0;i
将数组更改为:
var testArr=['()'、'{}'、'[]']

既然你这么做了

 if (testArr.indexOf("()") == -1 || testArr.indexOf("{}") == -1 ||
        testArr.indexOf("[]") == -1)

然后,即使这些括号中的一个不在数组中,条件也将返回false。

您已经用

var testArr = ['()', '{}', '()']
因此,如果需要测试字符串,则需要测试二维数组

if (testArr[0].indexOf("()") == -1

在第二种方法中,可以使用AND运算符来解决此问题

function brackets() {
var testArr = ['()', '{}', '()'];

/* Method 2 --- for loop. Same story, returns false, even when all   
testArr[i] === any of the cases and none of them is !==, it behaves as if it was 
false. I'm not sure why */

for (i = 0; i < testArr.length; i++) {
    if (testArr[i] !== "()" && testArr[i] !== "{}"  && testArr[i] !== "[]") {
        return false;
    }
}
return true;
}

brackets();
函数括号(){
var testArr=['()','{}','()'];
/*方法2---for loop.Same story返回false,即使所有
testArr[i]==任何情况下,如果没有一个是!==,它的行为就像是
错,我不知道为什么*/
对于(i=0;i
这应该可以做到:

var testArr = ['()', '{}', '()'];

if(testArr.some(function(e){ return /(){}/g.test(e) })){
   console.log("found");
} else {
   console.log("not found");   
}
查找“()”和“{}”的所有实例


testArr.indexOf(“[]”)显然失败了,因为它是逻辑的,或者如果其中任何一个失败了,它会返回false?@vsl0610:但是您的示例中的数组显然有一个错误,即它不包含
[]
?如果您对“一个不包含错误但仍然返回false的数组”有问题,那么您应该提供代码来演示这种情况。