从二进制“01000111”获取所有索引值1

时间:2015-12-18 01:11:11

标签: javascript arrays binary

我试图从二进制文件中获取所有索引,如“01000111”,因此它应该返回一个数组[1,2,3,7];

我试过这个来获取索引:

var getIndex1 = function(binary){
    var str = binary.toString();
    var indices = [];
    for(var i=0; i<str.length;i++) {
        if (str[i] == "1"){
          indices.push(i);
        } 
    }
    return indices;
  };

当我尝试使用该函数获取索引时,我得到了这个:

return getIndex1("01000111"); // it returns [0,2,3,4]

我尝试了相同的功能从scisors获取“s”的所有索引,它工作正常。有人有过这种问题吗?我在这里失踪了什么?请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

试试这个plunker

您提供的代码正在返回[1,5,6,7]。这是预期的行为。

使用字符串"01000111",索引1,5,6和7的值为1

如果你想从右到左,你应该将你的功能改为:

var getIndex1 = function(binary){
    var str = binary.toString();
    var indices = [];
    for(var i=str.length; i>0; i--) {
        if (str[i] == "1"){
          indices.push(str.length - i - 1);
        } 
    }
    return indices;
  };