在字符串数组中,如果循环发现其中一个字符串不是我们要查找的字符串,则循环返回false
。
如果找不到匹配的字符串,则该数组是正确的,它应该返回true
。即使数组没有"错误"
false
我尝试使用indexOf
,for循环和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()
答案 0 :(得分:4)
在第二种方法中,您可以使用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();
答案 1 :(得分:0)
将您的数组更改为:var testArr = ['()', '{}', '[]']
既然你做了
if (testArr.indexOf("()") == -1 || testArr.indexOf("{}") == -1 ||
testArr.indexOf("[]") == -1)
然后,即使数组中没有这些括号中的一个,条件也将返回false。
答案 2 :(得分:0)
您已使用
创建了一个数组var testArr = ['()', '{}', '()']
所以如果你需要测试你需要测试2-d数组的字符串
if (testArr[0].indexOf("()") == -1
答案 3 :(得分:0)
这应该这样做:
var testArr = ['()', '{}', '()'];
if(testArr.some(function(e){ return /(){}/g.test(e) })){
console.log("found");
} else {
console.log("not found");
}
查找&#34;()&#34;的所有实例和&#34; {}&#34;