跳至主要內容

枚举idea

Mr.Lexon小于 1 分钟tricks

枚举idea

有以下枚举对象:

  1. A
  2. B
  3. C 但是在我们实际使用过程中需要的是:
  4. AB
  5. ABC
  6. BC 这样的。 如果安装常规方法就需要把这些组合都定义一个枚举元素,但是当组合过多时,需要的枚举元素就更多了,那么如何对其简化呢? 我们以js为例子: 首先定义一个枚举类(在这里使用object代替)
let enum_example = {
 A:1<<2,
 B:1<<3,
 C:1<<4
}

在这里我们对每一种子组合定义一个二进制数,当我们需要枚举表示AB时,我们可以:

enum_example.A | enum_example.B

这样表示出来的数就是AB。那么如何从AB本身获取到A和B呢?可以参考这个函数:

function get_enum_from_multiple_code(code){
	let enum_array = []
	for( key in enum_example ){
		let judgement = code & enum_example[key]
		if (judgement > 0){
			enum_array.push(key)
		}
	}
	return enum_array
}

这个函数就可以获取到了A和B。这个方法有点像等长编码。

上次编辑于:
贡献者: Lexon