检查JavaScript数组中是否存在值
我有以下代码片段检查JavaScript数组中是否存在值,javascript,Javascript,我有以下代码片段 $scope.functionName = function(id) { var flag = true; var numbers = [1, 3, 30]; for (var i = 0; i < numbers.length; i++) { if (id == numbers[i]) { flag = false; } else { flag = true; } } if (flag == true
$scope.functionName = function(id) {
var flag = true;
var numbers = [1, 3, 30];
for (var i = 0; i < numbers.length; i++) {
if (id == numbers[i]) {
flag = false;
} else {
flag = true;
}
}
if (flag == true) {
console.log("this is true");
}
if (flag == false) {
console.log("this is true");
}
}
$scope.functionName=函数(id){
var标志=真;
变量数=[1,3,30];
对于(变量i=0;i
我要执行的是,如果输入值在数组中,
标志
值应该是假
,如果不是,它应该是真
。但是,在这个代码段中,尽管流在之后进入for循环,但它不会进入任何if条件。进入for循环后,它直接输出“this is true”标志始终为true。不需要循环数组,只需使用indexOf。另外,尝试对数字使用数字类型,对布尔型使用布尔类型,这两种类型都使用字符串
$scope.functionName = function(id)
{
var numbers = [1, 3, 30];
var flag = numbers.indexOf(parseInt(id, 10)) > -1; // Convert to number just in case
if(flag === true)
{
console.log("this is true");
}
if(flag === false)
{
console.log("this is true");
}
}
当值等于数组中的值时添加语句
$scope.functionName = function(id) {
var flag = true;
var numbers = [1, 3, 30];
for (var i = 0; i < numbers.length; i++) {
if (id == numbers[i]) {
flag = false;
break;
}
}
if (flag == true) {
console.log("this is true");
}
if (flag == false) {
console.log("this is false");
}
}
$scope.functionName=函数(id){
var标志=真;
变量数=[1,3,30];
对于(变量i=0;i
以下是一种更清晰的方法,可以帮助您实现目标
checkIfNumberIsInArray = function(number, arr) {
return arr.includes(number)
}
console.log(checkIfNumberIsInArray(1, [1,2,3,4,5])) // true
console.log(checkIfNumberIsInArray(6, [1,2,3,4,5])) // false
请参见为什么要使用“true”
和“false”
而不是true
和false
?感谢您指出@jornsharpe。即使我将标志更改为布尔值,流仍然不会进入内部比较if条件。请尝试一些较短的操作,例如$scope.functionName=function(id){return[1,3,30]。includes(id)}
这两个控制台。log
语句都说“this is true”。而else
子句则是浪费时间。