Javascript 在for循环中,如何阻止条件语句同时运行if子句和else子句?

Javascript 在for循环中,如何阻止条件语句同时运行if子句和else子句?,javascript,arrays,Javascript,Arrays,我有一个循环的数组,用来测试循环中是否存在用户提供的字符串。当我运行循环并进行检查时,它在匹配的数组项上返回true,在不匹配的数组项上返回false。我知道这是因为我在检查每个单独的数组项。我的问题是,如何仅当字符串与数组项匹配时才得到true var string = "a"; var array = ["a", "b", "c"]; for(var i = 0; i < array.length; i++){ if(string == array[i]){ c

我有一个循环的数组,用来测试循环中是否存在用户提供的字符串。当我运行循环并进行检查时,它在匹配的数组项上返回true,在不匹配的数组项上返回false。我知道这是因为我在检查每个单独的数组项。我的问题是,如何仅当字符串与数组项匹配时才得到true

var string = "a";
var array = ["a", "b", "c"];
for(var i = 0; i < array.length; i++){
    if(string == array[i]){
        console.log("Exists");
    }
    else{
        console.log("Doesn't exist");
    }
}
var string=“a”;
变量数组=[“a”、“b”、“c”];
对于(var i=0;i
现在,如果我运行这个,我会看到:

“存在”
“不存在”
“不存在”

您可以使用Es6

如果您担心浏览器支持,那么只需使用

您可以使用Es6来完成

如果您担心浏览器支持,那么只需使用

尝试:

var string=“a”;
变量数组=[“a”、“b”、“c”];
var=false;
对于(var i=0;i
试试:

var string = "a";
var array = ["a", "b", "c"];
var found = false;
for(var i = 0; i < array.length; i++){
    if(string == array[i]){
        found = true;
        break;
    }
}
if (found === true){
    console.log("Exists");
}
else{
    console.log("Doesn't exist");
}
var string=“a”;
变量数组=[“a”、“b”、“c”];
var=false;
对于(var i=0;i
您可以使用仅获取匹配的项目:

var string = "a";
var array = ["a", "b", "c"];

var matches = array.filter(function(item) {
   return item === string;
});
还是ES6

var matches = array.filter(item => item === string);
如果您只想
true
/
false
,也可以使用:

array.some(item => item === string); // true
array.some(item => item === 'foo'); // false
您可以使用仅获取匹配的项目:

var string = "a";
var array = ["a", "b", "c"];

var matches = array.filter(function(item) {
   return item === string;
});
还是ES6

var matches = array.filter(item => item === string);
如果您只想
true
/
false
,也可以使用:

array.some(item => item === string); // true
array.some(item => item === 'foo'); // false
使用该方法

需要注意的是,
.some()
在返回第一个真值后将停止执行,而
.forEach()
过滤器()
每次都会在整个数组上迭代。这可能会严重影响性能,具体取决于阵列的大小

使用该方法

需要注意的是,
.some()
在返回第一个真值后将停止执行,而
.forEach()
过滤器()
每次都会在整个数组上迭代。这可能会严重影响性能,具体取决于阵列的大小


您可以使用
for..of
循环,
中断

var string=“a”;
变量数组=[“a”、“b”、“c”];

for(数组的let prop){if(prop==string){console.log(“Exists”);break;}您可以使用
for..of
loop,
break

var string=“a”;
变量数组=[“a”、“b”、“c”];

for(数组的let prop){if(prop==string){console.log(“Exists”);break;}我会在find=true之后添加break;否则,即使找到了答案,也会在整个数组中循环,浪费处理时间。这一点很好。编辑,但实际上indexOf可能是一个更好的解决方案;否则,即使找到了答案,也会在整个数组中循环,浪费处理时间。这一点很好。编辑,但实际上indexOf可能是一个更好的解决方案。你必须使用break关键字你必须使用break关键字