Javascript JS反向工程有点价值

Javascript JS反向工程有点价值,javascript,bit-manipulation,Javascript,Bit Manipulation,我在一边做学习项目,一边玩弄如何处理比特值的东西。我不确定我所做的是否正确 我有一个对象,其中包含位值列表: const bitVal = { food_item_1: 0x04, food_item_2: 0x08, food_item_3: 0x40 } 等等 我有一个操作,当用户选择食物的组合时,它会像这样将这些值相加 bitValue.food_item_1|bitValue.food_item_3 然后我会把它保存在数据库里 我的问题是,当我获取位值时。我如何计算哪

我在一边做学习项目,一边玩弄如何处理比特值的东西。我不确定我所做的是否正确

我有一个对象,其中包含位值列表:

const bitVal = {
   food_item_1: 0x04,
   food_item_2: 0x08,
   food_item_3: 0x40
}
等等

我有一个操作,当用户选择食物的组合时,它会像这样将这些值相加

bitValue.food_item_1|bitValue.food_item_3

然后我会把它保存在数据库里

我的问题是,当我获取位值时。我如何计算哪些项目构成位号

所以食物项目1和食物项目2=
68
。基于此,当我从DB得到,
68
时,我如何计算出使用了哪两个或哪三个(可能有两个以上,例如只有两个)

我的第一次尝试是一个函数,它迭代
bitValue
对象中的所有值,并计算每个值,看看它是否等于DB中的值

这里的问题是。如果我在那个位字段中有10个左右的值,那么要计算出来需要大量的计算


有更好的处理方法吗?

您可以迭代这些值,并使用组合值执行按位and运算,以进行真实性检查

const
bitVal={food_item_1:0x04,food_item_2:0x08,food_item_3:0x40},
数值=68;
Object.entries(bitVal.forEach)([k,v])=>{
if(价值和价值){
控制台日志(k);
}
});