簡體   English   中英

for循環和數組有問題

[英]Having problems with for loop and arrays

(我知道有一種更簡單的方法可以轉換為二進制文件,但在完成此工作之前我不知道。因此,我將嘗試完成此工作。我對此進行了編碼只是為了學習):)我正在嘗試創建將二進制轉換為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;
}

有用。 但是我希望能夠一次轉換多個字節。 這就是我要這樣做的方式:

function fromBinaryToASCII(sentence) {
  let convertThis = sentence.split(' ');
  let result = [];
  for (i = 0; i < convertThis.length; i++) {
    result.push(fromBinaryToNumber(convertThis[i]));
  }
  return result;
}

我已經制作了一個函數,可以成功地將一個句子轉換為二進制,並且由於某種原因,一個函數可以運行,但不能運行,即使它們看起來非常相似。

因此,我試圖找出問題所在,然后嘗試將console.log放入for循環中並打印出i。 像這樣:

for (i = 0; i < convertThis.length; i++) {
  result.push(fromBinaryToNumber(convertThis[i]));
  console.log(i);
}

並且由於某種原因,它僅輸出數字6。當我刪除result.push代碼時,它會正確輸出。 我很困擾。 有人能幫我嗎? -謝謝

(對不起,標題不好,或者我解釋不好)

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

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

一個運行時,它將更改另一個的編號。...這就是為什么var不是可選的。 所以要么使用let要么var

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM