二进制字符串查找

时间:2016-09-23 19:28:47

标签: javascript jquery arrays

是否有一个javascript脚本解决方案来检查字符串并根据字符串字符位置显示一个值。例如:

0001001000010010

如果第1位为1,则显示红色

如果第1位为0则不显示任何内容

如果第2位为1,则显示蓝色

如果第2位为0,则不显示任何内容

等等。

我的字符串目前只显示16位输出

$("#spanwStatus_Word_1").text (Number(data[6]).toString(2));

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

var res = words.filter ( (word, i) => num & (1<<i) );

&#13;
&#13;
var words = ['indigo', 'grey',   'pink',  'red', 
             'blue',   'yellow', 'olive', 'beige',
             'green',  'orange', 'brown', 'fusha', 
             'purple', 'black',  'white', 'violet'],
    num = 0b0001001000010010;

var res = words.filter ( (word, i) => num & (1<<i) );

console.log(res);
&#13;
&#13;
&#13;

然后你有一个单词数组,每个位都有一个。

请注意,数组中的单词列出左侧最低索引,而(二进制)数字表示最低&#34;索引&#34;在右边。因此,如果您设置最低有效位,您将在索引0处获得该单词。

如果您需要包含数组中的空格,请使用map

var res = words.map ( (word, i) => num & (1<<i) ? word : '' );

&#13;
&#13;
var words = ['indigo', 'grey',   'pink',  'red', 
             'blue',   'yellow', 'olive', 'beige',
             'green',  'orange', 'brown', 'fusha', 
             'purple', 'black',  'white', 'violet'],
    num = 0b0001001000010010;

var res = words.map ( (word, i) => num & (1<<i) ? word : '' );

console.log(res);
&#13;
&#13;
&#13;