js生成随机颜色数组,不要黄色系,不要相近色
时间: 2023-10-20 16:59:43 浏览: 71
要生成一个随机颜色数组,并排除黄色系以及相近色,你可以使用以下代码:
```javascript
function generateRandomColor() {
var letters = "0123456789ABCDEF";
var color = "#";
// 生成一个随机颜色
for (var i = 0; i < 6; i++) {
var randomIndex = Math.floor(Math.random() * letters.length);
color += letters[randomIndex];
}
return color;
}
function isSimilarColor(color1, color2, threshold) {
// 将颜色转换为RGB值
var rgb1 = hexToRgb(color1);
var rgb2 = hexToRgb(color2);
// 计算颜色之间的差异
var diff = Math.sqrt(
Math.pow(rgb2.r - rgb1.r, 2) +
Math.pow(rgb2.g - rgb1.g, 2) +
Math.pow(rgb2.b - rgb1.b, 2)
);
// 如果差异小于阈值,则认为颜色相近
return diff < threshold;
}
function generateUniqueColorArray(length, excludeColor, threshold) {
var colorArray = [];
while (colorArray.length < length) {
var randomColor = generateRandomColor();
// 检查生成的颜色是否为黄色系或与已有颜色相近,如果是则重新生成
if (!randomColor.includes("FF") && !isSimilarToExistingColors(randomColor, colorArray, threshold)) {
colorArray.push(randomColor);
}
}
return colorArray;
}
function isSimilarToExistingColors(color, colorArray, threshold) {
for (var i = 0; i < colorArray.length; i++) {
if (isSimilarColor(color, colorArray[i], threshold)) {
return true;
}
}
return false;
}
// 将十六进制颜色转换为RGB值
function hexToRgb(hex) {
var bigint = parseInt(hex.slice(1), 16);
var r = (bigint >> 16) & 255;
var g = (bigint >> 8) & 255;
var b = bigint & 255;
return { r: r, g: g, b: b };
}
// 调用函数生成排除黄色系和相近色的随机颜色数组
var arrayLength = 5; // 数组长度
var excludeColor = "#