简单的设计一个权限比对方式:
1、假设有以下权限数字
const a = 1
const b = 2
const c = 4
const d = 8
const e = 16
转换成二进制为
console.log('a:', parseInt(a).toString(2))
console.log('b:', parseInt(b).toString(2))
console.log('c:', parseInt(c).toString(2))
console.log('d:', parseInt(d).toString(2))
console.log('e:', parseInt(e).toString(2))
---
输出:
a: 1
b: 10
c: 100
d: 1000
e: 10000
2、某人有管理权限b,c,d,e
b+c+d+e=2+4+8+16=30
检测权限位为:
console.log('a:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(a).toString(2), 2)))
console.log('b:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(b).toString(2), 2)))
console.log('c:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(c).toString(2), 2)))
console.log('d:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(d).toString(2), 2)))
console.log('e:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(e).toString(2), 2)))
------
输出:
a: false // a权限为false
b: true
c: true
d: true
e: true
重点:
// 权限检测
!!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(a).toString(2), 2))