Javascript 从“二进制”中获取1的所有索引值;01000111“;
我试图从二进制文件中获取所有索引,如“01000111”,因此它应该返回一个数组[1,2,3,7] 我尝试了以下方法来获取索引: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);
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;
};