当我尝试将函数结果写入具有指定索引的数组tmp
时,整个数组将更改为数字。
我尝试单独运行函数hex2dec,该函数的运行方式与预期的相同,并且尝试向其写入常量,该函数也可以运行。但是当我用函数结果替换常量时,数组变成了15。(取决于函数输入)
function clrData(data) {
data = data.split("");
tmp = [0, 0, 0];
tmp[0] = hex2dec(data[0] + data[1]);
tmp[1] = hex2dec(data[2] + data[3]);
tmp[2] = hex2dec(data[4] + data[5]);
return tmp;
}
clrData("FFFFFF")
应该产生[255, 255, 255]
,但是产生15
function clrData(data) {
data = data.split("");
tmp = [0, 0, 0];
tmp[0] = hex2dec(data[0] + data[1]);
tmp[1] = hex2dec(data[2] + data[3]);
tmp[2] = hex2dec(data[4] + data[5]);
return tmp;
}
function plc(num) {
plc = 0;
while (num > 0) {
num /= 10;
plc++;
num = Math.floor(num);
}
return plc;
}
function hex2dec(num) {
num = num.toString();
numArr = num.split("");
num2 = 0;
for (i=0; i<numArr.length; i++) {
if (numArr[i] == "0" || numArr[i] == "1" || numArr[i] == "2" || numArr[i] == "3" || numArr[i] == "4" || numArr[i] == "5" || numArr[i] == "6" || numArr[i] == "7" || numArr[i] == "8" || numArr[i] == "9") {
tmp = Number(numArr[i]);
} else {
switch (numArr[i]) {
case "a":
case "A":
tmp = 10;
break;
case "b":
case "B":
tmp = 11;
break;
case "c":
case "C":
tmp = 12;
break;
case "d":
case "D":
tmp = 13;
break;
case "e":
case "E":
tmp = 14;
break;
case "f":
case "F":
tmp = 15;
break;
default:
tmp = 0;
}
}
num2 += Math.pow(16, (numArr.length-1) - i) * tmp;
}
return num2;
}
<input id="finput" value="FFFFFF"><button onClick="this.innerHTML=clrData(document.getElementById('finput').value)">Activate!</button>
答案 0 :(得分:1)
您可以获取两个字符的组并映射整数值。
function clrData(data) {
return data.match(/../g).map(h => parseInt(h, 16));
}
console.log(clrData("FFFFFF"));