在这篇博文中,你将学会在javascript或typescript中检查一个数组的布尔值。
在javascript中查找数组包含的布尔值
数组包含一个类似类型值的集合。
例如,我们有一个包含多个复选框的用户表单--在Angular应用程序中可以有全选/取消全选。
FormGroup中的复选框是用FormArray定义的,它持有true - 如果复选框被选中,false - 复选框没有被选中。
要实现表单验证,比如如果用户没有选中任何复选框,就会显示错误信息--请至少选中一个复选框。
那么我们如何在Angular中检查存在于复选框数组中的布尔值true。
这篇文章讲述了在Javascript/Typescript/Angular中检查数组中存在的真/假值的多种方法。
- 带有if块的For循环
- 数组some()方法
- 数组indexOf方法
- Es7数组 包括
所有的例子都可以在Javascript,typescript, 和Angular 。
带有if块的For循环示例
一个基本的开发者将使用下面的逻辑来检查一个数组中的真值
- 迭代用于正常循环的数组
- 使用if循环检查每个元素的真值
- 如果找到了,返回真值并从循环中断开
- 如果没有找到,返回一个假值
function checkTrueExistsArray(array){
for(var k=0; k<array.length; k++){
if(array[k]){
return true
break;
}
}
return false;
}
var arrayVariable= [false,false,true,false,true]
var arrayVariable1= [false,false,false,false,false]
console.log(checkTrueExistsArray(arrayVariable)) //true
console.log(checkTrueExistsArray(arrayVariable1)) //false
数组Some()方法
数组中的Some()是javascript语言中一个内置的方法。
- 它遍历每个元素并为每个值调用回调。
- 如果回调返回一个真值,停止迭代并返回真值。
- 如果回调返回一个假值,则进入下一个迭代,直到返回真值或数组迭代结束。
function checkTrueUsingArraySome(array){
if(array.some((item)=> item === true)){
return true;
}
return false;
}
var arrayVariable= [false,false,true,false,true]
var arrayVariable1= [false,false,false,false,false]
console.log(checkTrueUsingArraySome(arrayVariable)) //true
console.log(checkTrueUsingArraySome(arrayVariable1)) //false
数组indexOf方法示例
indexOf method in Array 接受输入参数,如果在一个数组中找到输入,则返回索引位置,否则返回-1。
function checkTrueUsingArrayIndexOf(array){
if(array.indexOf(true) != -1){
return true;
}
return false;
}
var arrayVariable= [false,false,true,false,true]
var arrayVariable1= [false,false,false,false,false]
console.log(checkTrueUsingArrayIndexOf(arrayVariable)) //true
console.log(checkTrueUsingArrayIndexOf(arrayVariable1)) //false
Es7包括检查真值
ES7也就是最新的javascript语言引入了includes 方法。
如果在数组中找到的值,它返回真,否则返回假,你可以查看更多关于ES7的内容。
function checkTrueUsingArrayInclude(array){
if(array.includes(true)){
return true;
}
return false;
}
var arrayVariable= [false,false,true,false,true]
var arrayVariable1= [false,false,false,false,false]
console.log(checkTrueUsingArrayInclude(arrayVariable)) //true
console.log(checkTrueUsingArrayInclude(arrayVariable1)) //false