Javascript 将字符串拆分为成对数字的数组

Javascript 将字符串拆分为成对数字的数组,javascript,arrays,Javascript,Arrays,我正在尝试解决如何将以下十六进制字符串拆分为成对数字数组 目前,我有以下几点: function getRGB(hexVal) { var substrHexVal = hexVal.substring(1,hexVal.length); var splitHexVal = substrHexVal.split(""); return splitHexVal; } var a = getRGB("#00FF00"); a; ["0", "0", "F", "

我正在尝试解决如何将以下十六进制字符串拆分为成对数字数组

目前,我有以下几点:

function getRGB(hexVal) {

    var substrHexVal = hexVal.substring(1,hexVal.length);

    var splitHexVal = substrHexVal.split("");

    return splitHexVal;

}

var a = getRGB("#00FF00");

a;
["0", "0", "F", "F", "0", "0"]
返回以下内容:

function getRGB(hexVal) {

    var substrHexVal = hexVal.substring(1,hexVal.length);

    var splitHexVal = substrHexVal.split("");

    return splitHexVal;

}

var a = getRGB("#00FF00");

a;
["0", "0", "F", "F", "0", "0"]
但我需要把这个拿出来:

["00", "FF", "00"]

我想做的可能很明显,但我想自己做其余的。

您可能希望通过字符串,并用逗号分隔这些对。最后在逗号上拆分字符串:

function getRGB(hexVal) {
  var commaSeperated = '';

  // Removes the first character from the input string
  hexVal = hexVal.substring(1, hexVal.length);

  // Now let's separate the pairs by a comma
  for (var i = 0; i < hexVal.length; i++) {
    // Iterate through each char of hexVal

    // Copy each char of hexVal to commaSeperated
    commaSeperated += hexVal.charAt(i);

    // After each pair of characters add a comma, unless this
    // is the last char
    commaSeperated += (i % 2 == 1 && i != (hexVal.length - 1)) ? ',' : '';
  }
  // split the commaSeperated string by commas and return the array
  return commaSeperated.split(',');
}

console.log(getRGB("#00FF00"));    //  ["00", "FF", "00"]
函数getRGB(hexVal){ var commaSeperated=“”; //从输入字符串中删除第一个字符 hexVal=hexVal.子字符串(1,hexVal.长度); //现在让我们用逗号分隔这对 对于(变量i=0;i您可能希望通过字符串,并用逗号分隔这些对。最后在逗号上拆分字符串:

function getRGB(hexVal) {
  var commaSeperated = '';

  // Removes the first character from the input string
  hexVal = hexVal.substring(1, hexVal.length);

  // Now let's separate the pairs by a comma
  for (var i = 0; i < hexVal.length; i++) {
    // Iterate through each char of hexVal

    // Copy each char of hexVal to commaSeperated
    commaSeperated += hexVal.charAt(i);

    // After each pair of characters add a comma, unless this
    // is the last char
    commaSeperated += (i % 2 == 1 && i != (hexVal.length - 1)) ? ',' : '';
  }
  // split the commaSeperated string by commas and return the array
  return commaSeperated.split(',');
}

console.log(getRGB("#00FF00"));    //  ["00", "FF", "00"]
函数getRGB(hexVal){ var commaSeperated=“”; //从输入字符串中删除第一个字符 hexVal=hexVal.子字符串(1,hexVal.长度); //现在让我们用逗号分隔这对 对于(变量i=0;i 很明显,您需要测试伪值等,您可以将其缩短一行,但这是一种获得所需内容的简单方法


显然,你会想测试假值,等等,你可以把它缩短一行,但这是一个简单的方法来获得你想要的。

卢克,接受功能方面的力量

a="#c0ffee"
"#c0ffee"

[1,3,5].map(function(o) {return a.slice(o,o+2)})
["c0", "ff", "ee"]

接受功能方面的力量,卢克

a="#c0ffee"
"#c0ffee"

[1,3,5].map(function(o) {return a.slice(o,o+2)})
["c0", "ff", "ee"]
获取字符串,将其转换为大写,并使用简单的正则表达式提取所有十六进制对。大写转换并不是绝对必要的,但它可以确保十六进制对的一致性。您也可以轻松地将字母字符全部小写(请注意,正则表达式的“A-F”部分现在是“A-F”):

或者,如果您不在乎,那么可以使用“i”修饰符使正则表达式不区分大小写:

function getRGB(hexVal) {

    return hexVal.match(/[0-9a-f]{2}/gi);

}
另外,请注意,这些函数都不能确保您得到3对。如果您将“?!@$#00FF00FF”传递给它,您将得到[“00”,“FF”,“00”,“FF”]。类似地,如果您通过“00FF0”,您将得到[“00”,“FF”],因为只找到了两个完整的对

换句话说,您需要添加一些错误检查

获取字符串,将其转换为大写,并使用简单的正则表达式提取所有十六进制对。大写转换并不是绝对必要的,但它可以确保十六进制对的一致性。您也可以轻松地将字母字符全部小写(请注意,正则表达式的“A-F”部分现在是“A-F”):

或者,如果您不在乎,那么可以使用“i”修饰符使正则表达式不区分大小写:

function getRGB(hexVal) {

    return hexVal.match(/[0-9a-f]{2}/gi);

}
另外,请注意,这些函数都不能确保您得到3对。如果您将“?!@$#00FF00FF”传递给它,您将得到[“00”,“FF”,“00”,“FF”]。类似地,如果您通过“00FF0”,您将得到[“00”,“FF”],因为只找到了两个完整的对


换句话说,您需要添加一些错误检查。

太好了。我有点不识时务,所以有可能向aks征求一些意见吗?:)@丹尼尔:非常感谢你的评论。这对理解正在发生的事情有很大帮助。太好了。我有点不识时务,所以有可能向aks征求一些意见吗?:)@丹尼尔:非常感谢你的评论。这对理解正在发生的事情有很大帮助。谢谢你的回答。我不知道我将如何才能对这类事情有所了解。丹尼尔·瓦萨洛:IDK,显然有人心情不好。我会报答你的。谢谢你的回答。我不知道我将如何才能对这类事情有所了解。丹尼尔·瓦萨洛:IDK,显然有人心情不好。我会报答你的。我喜欢这个版本,但有点不确定它是如何工作的。我理解.map为数组中的每个元素调用提供的函数。提供的数组是1,3,5,但我不确定如何从那里建立连接???。map为数组的每个成员调用括号中的匿名函数[1,3,5]。每次调用函数时,o等于一个数组元素,并且它还可以访问原始变量a(在您的版本中为hexVal)。它使用参数o(开始位置)和o+2(结束位置)调用.slice。我也喜欢这个版本,但有点不确定它是如何工作的。我理解.map为数组中的每个元素调用提供的函数。提供的数组是1,3,5,但我不确定如何从那里建立连接???。map为数组的每个成员调用括号中的匿名函数[1,3,5]。每次调用函数时,o等于一个数组元素,并且它还可以访问原始变量a(在您的版本中为hexVal)。它使用参数o(开始位置)和o+2(结束位置)调用.slice。另见