Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从“二进制”中获取1的所有索引值;01000111“;_Javascript_Arrays_Binary - Fatal编程技术网

Javascript 从“二进制”中获取1的所有索引值;01000111“;

Javascript 从“二进制”中获取1的所有索引值;01000111“;,javascript,arrays,binary,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);

我试图从二进制文件中获取所有索引,如“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;
  };
我尝试使用相同的函数从Scissor获取“s”的所有索引,效果很好。有人有这种问题吗?我错过了什么?请帮忙,谢谢

试试这个

您提供的代码正在返回
[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;
  };

对于输入
“01000111”
,函数不会返回
[0,2,3,4]
。它返回
[1,5,6,7]
。无论如何,问题是你的代码是从左到右计数,而不是从右到左。哇,真奇怪?我在freecodecamp上试过这个,但是输入“01000111”返回[0,2,3,4]是因为浏览器吗@点只要试着在你自己的浏览器中运行代码。我不能在你提到的网站上查看它,因为它好像坏了。我觉得很愚蠢,谢谢你@Pointy,我看错了方向,我是从右向左看的。所以我不需要反转二进制来得到结果。你可以回答这个问题,这样我就可以投票了:像我在评论中发现的问题一样,谢谢
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;
  };