Javascript 对for循环和数组有问题

Javascript 对for循环和数组有问题,javascript,arrays,for-loop,binary,Javascript,Arrays,For Loop,Binary,(我知道有更简单的方法可以转换成二进制,但在我几乎完成这个之前我不知道。所以我要试着完成这个。我编写这个只是为了学习):) 我正在尝试创建一个将二进制代码转换为ASCII代码的函数。以下是我如何从二进制转换为数字: function fromBinaryToNumber(num) { let numbers = num.split('') //turns the binary into an array let firstIndexWith1; let numbersToAdd =

(我知道有更简单的方法可以转换成二进制,但在我几乎完成这个之前我不知道。所以我要试着完成这个。我编写这个只是为了学习):) 我正在尝试创建一个将二进制代码转换为ASCII代码的函数。以下是我如何从二进制转换为数字:

function fromBinaryToNumber(num) {
  let numbers = num.split('') //turns the binary into an array
  let firstIndexWith1;
  let numbersToAdd = [];
  let result;

  //Delete 0's at start of array
  for (i = 0; i < numbers.length; i++) {
    numbers[i] = parseInt(numbers[i], 10);
  }
  firstIndexWith1 = numbers.indexOf(1);
  numbers.splice(0, firstIndexWith1);

  //Convert
  let checkAgainstThese = [128, 64, 32, 16, 8, 4, 2, 1];
  checkAgainstThese = checkAgainstThese.slice(checkAgainstThese.length - numbers.length, checkAgainstThese.length);

  //put numbers to add in array
  for (i = 0; i < numbers.length; i++) {
    if (numbers[i] === 1) {
      numbersToAdd.push(checkAgainstThese[i]);
    }
  }

  //add numbers
  result = numbersToAdd.reduce((a, b) => a + b, 0);
  return result;
}
函数fromBinarytonNumber(num){
让numbers=num.split(“”)//将二进制文件转换为数组
让第一个索引为1;
让numbersToAdd=[];
让结果;
//删除数组开头的0
对于(i=0;ia+b,0);
返回结果;
}
它起作用了。但我希望能够一次转换多个字节。这就是我试图做到的:

function fromBinaryToASCII(sentence) {
  let convertThis = sentence.split(' ');
  let result = [];
  for (i = 0; i < convertThis.length; i++) {
    result.push(fromBinaryToNumber(convertThis[i]));
  }
  return result;
}
函数fromBinaryToASCII(句子){ 让我们把这个=句子分开(“”); 让结果=[]; 对于(i=0;i 我已经做了一个函数,它成功地将一个句子转换成二进制,出于某种原因,一个可以工作,但这个不能,尽管它们看起来非常相似

因此,我试图找出问题所在,并尝试在for循环中放入一个console.log并打印出I。像这样:

for (i = 0; i < convertThis.length; i++) {
  result.push(fromBinaryToNumber(convertThis[i]));
  console.log(i);
}
for(i=0;i
出于某种原因,它只输出数字6。当我删除result.push代码时,它会正确输出。我很困惑。有人能帮我吗? -谢谢


(很抱歉标题不好,或者如果我解释得不好)

您能给出一个输入和预期输出的示例吗?我看不到您使用var,所以请享受全局变量相互覆盖的乐趣。每个for循环都使用
i
,您不需要删除
i
,因此它们是相同的…有没有控制台错误?有没有特殊原因您不能只执行
var binary=“101”;var dec=parseInt(binary,2)
?Tibrogargan,我发现我几个小时前就可以这么做了,是的。。我这样做只是为了学习
for(i=0; i<convertThis.length; i++) {  <-- global i

for(i=0; i<numbers.length; i++) {  <-- global i
for(let i=0; i<convertThis.length; i++) { 

for(let i=0; i<numbers.length; i++) {