将数组十六进制颜色转换为数组rgb颜色
turn array hex colors into array rgb colors
我有一个十六进制颜色数组,如下所示:
var hexColors = [
"#ffffff",
"#ffffff",
"#ffffff",
"#f3f3f3",
"#f3f3f3",
"#f3f3f3"];
我想把它变成这样:
var rgbColors = new Array(
[62,35,255],
[60,255,60],
[255,35,98],
[45,175,230],
[255,0,255],
[255,128,0]);
使用此功能:
function hexToRgb(hex) {
var shorthandRegex = /^#?([a-f'd])([a-f'd])([a-f'd])$/i;
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
return r + r + g + g + b + b;
});
var result = /^#?([a-f'd]{2})([a-f'd]{2})([a-f'd]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
我该怎么办?谢谢
您过度复杂化了这一点:不需要使用regex在目标字符串上运行两次。在第一次迭代时提取所有信息就足够了。像这样:
function hexToRgb(hex) {
var res = hex.match(/[a-f0-9]{2}/gi);
return res && res.length === 3
? res.map(function(v) { return parseInt(v, 16) })
: null;
}
该函数已准备好在另一个.map
中使用,从而提供所需的结果。
var hexColors = [
"#ffffff",
"#ffffff",
"#ffffff",
"#f3f3f3",
"#f3f3f3",
"#f3f3f3"
];
var rgbColors = hexColors.map(hexToRgb);
演示
var hex = 'ffaadd';
var rgb = parseInt(hex, 16);
var red = (rgb >> 16) & 0xFF;
var green = (rgb >> 8) & 0xFF;
var blue = rgb & 0xFF;
位运算符使它在效率和可读性方面都更聪明。
相关文章:
- Javascript没有从数组中选择背景颜色
- 如何使用javascript创建颜色数组
- 使用圆中的数组更改背景颜色项目
- 使用颜色数组为不同的条形图设置不同的颜色
- 使用jQuery循环遍历颜色数组
- 为什么d3忽略了我的颜色数组
- 在数组中查找颜色值(以#开头的字符串)
- d3.根据数组内容改变各个节点的颜色
- 在多维数组中对RGB颜色进行排序
- c3js - 使用 chart.load() 使用颜色数组更新图表颜色
- 使用数组更改输入框中某些单词的颜色
- Javascript.使用鼠标悬停事件更改数组中 td 元素的背景颜色
- 在更改角度数组时设置
颜色 - AJAX:使用数组值的背景颜色更改函数不起作用
- 从输入字符串中获取包含字符及其 ANSI 颜色的数组
- 如何基于数组值创建不同的颜色
- 发送&通过websocket接收颜色数组
- JavaScriptforeach循环遍历一个十六进制值数组,使用setTimeout循环遍历背景颜色
- 在JavaScript中快速绘制/更新二维正方形数组颜色的方法
- 如何在