如何解决javascript数组编写问题?

时间:2019-07-30 16:28:10

标签: javascript arrays

当我尝试将函数结果写入具有指定索引的数组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>

1 个答案:

答案 0 :(得分:1)

您可以获取两个字符的组并映射整数值。

function clrData(data) {
    return data.match(/../g).map(h => parseInt(h, 16));
}

console.log(clrData("FFFFFF"));