【问题标题】:Get all index value of 1 from binary "01000111"从二进制“01000111”获取所有索引值1
【发布时间】:2016-03-24 15:46:03
【问题描述】:

我试图从二进制文件中获取所有索引,例如“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]

我尝试了相同的函数来从 scissorss 中获取“s”的所有索引,它工作正常。有人遇到过这种问题吗?我在这里缺少什么?请帮忙,谢谢。

【问题讨论】:

  • 你的函数为输入"01000111"返回[0,2,3,4]。它返回[1,5,6,7]。无论如何,问题在于您的代码是从左到右而不是从右到左计数的。
  • 哇,这很奇怪吗?我在 freecodecamp 上试过这个,但它为输入“01000111”返回 [0,2,3,4]
  • 是浏览器的原因吗? @Pointy
  • 尝试在您自己的浏览器中运行代码。我无法在您提到的网站上查看它,因为它似乎已损坏。
  • 我觉得自己很愚蠢,谢谢@Pointy,我看错了方向,我从右到左看。所以我只需要反转二进制文件即可获得结果。你可以回答这个问题,所以我可以投票:D

标签: javascript arrays binary


【解决方案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;
  };

【讨论】:

  • 看来我在评论中发现了问题,但谢谢
猜你喜欢
  • 2010-10-01
  • 1970-01-01
  • 2022-01-06
  • 2021-11-27
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多