我有一个这样的forloop:
for (var i = 0; i < this.bucket_names.length; i++) {
if(this.bucket_names[i].criterium){
bucketName = this.bucket_names[i].criterium;
} else {
bucketName = this.bucket_names[i];
}
console.log(bucketName, i, bucketName !== 'match', bucketName !== 'test');
if (!selectedFilterDict && (bucketName !== "match" || bucketName !== "test")) {
rawOptionData[key] = {
terms: terms
}
} else if (bucketName !== "match" || bucketName !== "test"){}
}
我在其中使用if语句检查字符串bucketNames
上的match, test
的情况
if (!selectedFilterDict && (bucketName !== "match" || bucketName !== "test")) {}
不起作用是因为在&&
之后条件始终为真,如果语句可以工作,如何将这些bucketNames组合起来使之生效?
答案 0 :(得分:1)
尝试使用
var treeWalker = window.frames[0].document.createTreeWalker(
window.frames[0].document.body,
NodeFilter.SHOW_ALL,
{ acceptNode: acceptTextNode });
答案 1 :(得分:0)
(bucketName !== "match" || bucketName !== "test")
将始终返回true,因为bucketName
不能同时是"match"
和"test"
。
我们假设bucketName
是"match"
,第一张支票bucketName !== "match"
将返回false,因此我们转到第二张支票bucketName !== "test"
。由于bucketName
已经是"match"
,因此将返回true。如果我们将bucketName
声明为"test"
,也是如此。
如果要检查bucketName
既不是"test"
也不是"match"
,请将if语句更改为(bucketName !== "match" && bucketName !== "test")
答案 2 :(得分:0)
正如其他人已经解释的那样,一个变量不能同时与两个不同的值不同,所以:
bucketName !== "match" || bucketName !== "test"
由于两个条件之一始终为true
,因此将始终求值为true
。
如果要检查bucketName
与给定集中的任何值都不匹配,可以使用Array.prototype.includes()
:
const whiteListed = ['match', 'test'].includes(bucketName);
if (!selectedFilterDict && !whiteListed) {
...
} else if (whiteListed) {
...
}
如果您希望在不使用includes
的情况下使用相同的逻辑,则也可以使用:
if (!selectedFilterDict && bucketName !== "match" && bucketName !== "test") {
...
}
或者:
if (!selectedFilterDict && !(bucketName === "match" && bucketName === "test")) {
...
}
答案 3 :(得分:0)
我想您已经知道bucketName
不能同时“匹配”和“测试”。因此,定义一个bucketName
数组,并使用! includes()
检查您的情况。
const bucketNames = ["match", "test", "exists"];
let bucketName = 'tst';
let test= !bucketNames.includes(bucketName);
console.log(test)
对于您的代码库,如下所示,
if (!selectedFilterDict && !bucket_names.includes(bucketName)) {
rawOptionData[key] = {
terms: terms
}
}