在我的es6编译器中,我正在研究一个将任何二进制数转换为以10为底的数字的函数。基本上,1和0都默认为1。
这个项目仅是4个12岁孩子的乐趣(我),因此,如果有人需要他们的工作,就不要着急。无论如何,我发现问题在于以下事实:当您输入二进制数时,即使数字为0,存储在convertedNumQuery
中的数字也默认为1。我已经尝试了到处调试,但也许只是因为我是newb>。<< / p>
var numQuery = prompt("Enter a binary number to convert to base-10! Don't leave the \"0b\" in there.").split("");
var binaryChart = [1];
var convertedNumQuery = numQuery.map(Number);
var base10 = 0;
console.log(convertedNumQuery+ "\n");
for (var i = 0; i < (numQuery.length - 1); i++) {
binaryChart.unshift(binaryChart[0]*2);
console.log(binaryChart);
}
console.log(convertedNumQuery);
console.log("\n convertedNumQuery is array: " + Array.isArray(convertedNumQuery));
for (var i = 0; i < convertedNumQuery.length; i++ ) {
if (convertedNumQuery[i] = 1) {
base10 += binaryChart[i];
console.log(convertedNumQuery[i]);
}
}
console.log(base10);
说我要转换的二进制数是101010或42。预期结果42应该存储在base10
中,但最终发生的是binaryChart
中的每个数字是添加后得到63。甚至更陌生,当我在第15行convertedNumQuery
中查看console.log(convertedNumQuery[i]);
时,该数组在控制台中被记录为全1。