概念:
1、js规定所有的正负整数都是true,只有0是false
2、在js中作为位运算符表示取反,即把执行该操作的数值的二进制码的每一位(共8位)中0和1互换。
例:数组
var arr=[1,3,5,7,9]
方法一 判断indexOf大于等于0的则数组包含
var index1 = arr.indexOf(999) // -1
var index2 = arr.indexOf(1) // 0
由上可见,indexOf返回该数据在数组中的索引。因为数组中数据的索引是从0开始,所以可以判断大于等于0的皆为在数组中
var num = 1
if(arr.indexOf(num)>=0){
// ToDo
}
方法二 判断indexOf不等于-1的则数组包含
var index1 = arr.indexOf(66) // -1
var index2 = arr.indexOf(77) // -1
var index3 = arr.indexOf(3) // 1
由上可见,indexOf返回该数据在数组中的索引,不在数组中的数据返回-1,所以可以判断不等于-1的皆为在数组中
var num = 1
if(arr.indexOf(num)!==-1){
// ToDo
}
方法三 非运算符~
var index1 = arr.indexOf(1) // 0
var index2 = ~arr.indexOf(1) // -1
var index3 = arr.indexOf(3) // 1
var index4 = ~arr.indexOf(3) // -2
var index5 = arr.indexOf(999) // -1
var index6 = ~arr.indexOf(999) // 0
关于非运算符的算法这里不在赘述,由上可见,
index2=-(index1+1)
index4=-(index3+1)
这里可以理解为本人发现的一种快速计算方法吧,如有问题请指摘~
数组的索引最小是0,非运算后返回的最大值是-1。js规定所有的正负整数都是true,只有0是false。所以数组中不存在的数据经非运算后返回的值为0,即为false;数组中包含的数据经非运算后返回的值为正负整数,即为true
var num = 1
if(~arr.indexOf(num)){
// ToDo
}
方法四 数组includes方法
var index1 = arr.includes(1) // true
var index2 = arr.indexOf(99) // false
includes方法只返回true或者false,在数组中则为true,反之false。
var num = 1
if(arr.includes(num)){
// ToDo
}