【问题标题】:javascript bitmask add from stringjavascript位掩码从字符串添加
【发布时间】:2014-06-26 17:17:02
【问题描述】:

我创建了以下内容:

var some_string = 'cb';

var a = 1;
var b = 2;
var c = 4;
var d = 8;

var mask = 0;

我想将 a+b+c+d 变量存储在我这样做时有效的掩码中:

mask |= c; // mask now equals 4

我遇到的问题是我需要在循环中添加 var 值:

mask |= some_string[0]

这不起作用。我假设我必须转换 some_string[0] 因为 some_string[0]!=var c

编辑:使用 eval 作品...

mask |= eval(some_string[0])

...考虑到 eval 名声这么差,还有其他方法吗?

【问题讨论】:

  • 这有点令人困惑(双关语)。你期望的输出是什么?
  • @CBroe 我不明白......是什么让它与这个问题重复?
  • 您是说要循环遍历字符串'cb' 中的字符,将var cvar b 的值添加到您的掩码中吗?这闻起来像 XY problem
  • @CBroe 我想我现在明白了,是的,现在我同意它看起来像重复。

标签: javascript bit-manipulation bitmask


【解决方案1】:

您可以尝试使用对象而不是单个变量吗?

var some_string = 'cb';
var obj = {
    a: 1,
    b: 2,
    c: 4,
    d: 5
};

var mask = 0;

mask |= obj[some_string[0]];

alert (mask);

http://jsfiddle.net/W26Lx/

【讨论】:

  • 你可能想从你的 jsfiddle 中删除第 13 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 2015-02-23
相关资源
最近更新 更多