в console получается 16,8,4,0,1 как получить сложение этих цифр //29

<!DOCTYPE html>
<html>
<head>
    <title>kotorak func</title>
</head>
<body>
    <form>
    <input type="text" id="bin" name="">
    <button type="button" id="sumBin">SUM</button>
    </form>
    <div id="resultBinar"></div>
<script>
let num = document.getElementById('bin').value;
let numStr = num.toString().split('');
let valueArr = numStr.map(Number);
let resultBin = document.getElementById('resultBinar');
let bttBin = document.getElementById('sumBin');

function binar(a,n) {
    let sums = 0;
    for (let i = 0; i < valueArr.length; i++) {
        a++;
        n--;
        sums += valueArr[a] * Math.pow(2,n);
        
       
    }
    return sums;
}

 

bttBin.addEventListener('click',setBin);
function setBin() {
    console.log(num)
     resultBin.innerText = binar(-1,valueArr.length);
  
}



</script>
</body>
</html>

Ответы (1 шт):

Автор решения: entithat

Ваш код:

let num = 11101;
let numStr = num.toString().split('');
let valueArr = numStr.map(Number);

console.log(valueArr);

let arr2 = [];

function binar(a, n) {
  let sum = 0;
  for (let i = 0; i < valueArr.length; i++) {
    a++;
    n--;
    sum += valueArr[a] * Math.pow(2, n);
  }
  console.log(sum);
}

binar(-1, valueArr.length)

Если сделать по красоте:

const binar=(n)=>[...''+n].reduce((ac,cu,i)=>+cu+ac*2,0);

console.log(binar(11101));

А вообще:

console.log(parseInt(11101, 2));

Ваш обновленный код:

document.getElementById('sumBin').addEventListener('click', () => {
  document.getElementById('resultBinar').innerHTML = parseInt(document.getElementById('bin').value, 2)
});
<form>
  <input type="text" id="bin">
  <button type="button" id="sumBin">SUM</button>
</form>
<div id="resultBinar"></div>

→ Ссылка