JavaScript: Как сохранить значения массива [char] в переменной? - PullRequest
1 голос
/ 23 января 2020

Я пишу десятичный в двоичный преобразователь в javascript, и у меня есть эта проблема.

Вот мой код.

function binaryConverter(x)
    {
        if(x === "")
        {
            return 0;
        }

        let binaryArray = new Array(128, 64, 32, 16, 8, 4, 2, 1);
        let result = new Array();
        let newX;

        //pelda: x = 75

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

            if(binaryArray[i] <= x)
            {
                result.push('1');
                newX = x - binaryArray[i]; // 75 - 64 = 11 | 11 - 8 = 3 | 3 - 2 = 1
                x = newX;

            }
            else
            {
                result.push('0');
            }
        }

        writeBinaryNumber(result);

    }

function writeBinaryNumber(ar)
    {


        for (let i = 0; i < ar.length; i++)
        {
            document.write(ar[i]);
        }
    }

С document.write () это работает (Я проверил это только с номером 75, я знаю, что первая часть двоичного кода равна 0, я исправлю это.). Но я хочу связаться с моим html. Я хотел бы вернуть переменную, которая содержит символы, которые находятся в массиве, но я не могу. В C ++ с итераторами это работает, но я не знаком с javascript, и я использовал Google для поиска решения, но не смог найти. Если кто-то знает решение, пожалуйста, запишите его! Спасибо!

Ответы [ 2 ]

1 голос
/ 23 января 2020

Используйте метод массива join(), чтобы объединить все строки в массиве в одну строку.

let binaryString = ar.join('');

Вы также можете просто объединить строку вместо создания массива.

function binaryConverter(x) {
  if (x === "") {
    return 0;
  }

  let binaryArray = new Array(128, 64, 32, 16, 8, 4, 2, 1);
  let result = '';
  let newX;

  //pelda: x = 75

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

    if (binaryArray[i] <= x) {
      result += '1'
      newX = x - binaryArray[i]; // 75 - 64 = 11 | 11 - 8 = 3 | 3 - 2 = 1
      x = newX;

    } else {
      result += '0';
    }
  }

  return result;
}

document.getElementById("input").addEventListener("change", function() {
  var input = parseInt(this.value);
  document.getElementById("result").innerText = binaryConverter(input);
})
Enter number: <input id="input"> 
<br>
Result: <span id="result"></span>
0 голосов
/ 23 января 2020

Вы можете сделать это

document.getElementById('demo').innerHTML = ar.join('')

function binaryConverter(x) {
  if (x === "") {
    return 0;
  }

  let binaryArray = new Array(128, 64, 32, 16, 8, 4, 2, 1);
  let result = new Array();
  let newX;

  //pelda: x = 75

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

    if (binaryArray[i] <= x) {
      result.push('1');
      newX = x - binaryArray[i]; // 75 - 64 = 11 | 11 - 8 = 3 | 3 - 2 = 1
      x = newX;

    } else {
      result.push('0');
    }
  }

  writeBinaryNumber(result);

}
binaryConverter(75)
function writeBinaryNumber(ar) {
 document.getElementById('demo').innerHTML = ar.join('')
}
#demo{
 color:red
}
<p id="demo" ></p>
...