想法是将两种颜色的rbg值混合在一起,并保持我的代码整洁。一个rgb的值不能超过255。我想做的是,如果数值超过255,则在添加值之后,将其保持在255。
我尝试过的一种方法有效,但是我觉得这里有重复的代码。我尝试过的另一种方法似乎在正确的轨道上,但是不起作用。
这是工作方式
const mixColors = (color1, color2) => {
let red = color1[0] + color2[0];
let green = color1[1] + color2[1];
let blue = color1[2] + color2[2];
if (red > 255) {
red = 255;
}
if (green > 255) {
green = 255;
}
if (blue > 255) {
blue = 255;
} else console.log(`rgb: ${red}, ${green}, ${blue}`);
};
mixColors([235, 45, 0], [100, 27, 47]);
这是我试图简化代码,但是没有用。作为一个单独的问题,为什么这种方式行不通?这些值被正确添加,似乎只是跳过了我的if语句。
const mixColors = (color1, color2) => {
const newColor = color1.map((a, i) => a + color2[i]);
if (newColor > 255) {
newColor[i] = 255;
}
console.log(newColor);
return newColor;
};
mixColors([235, 45, 0], [100, 27, 47]);
第一种方法是最好的方法,我已经过度考虑了吗?或者,还有更好的方法?
您的newColor
是一个数组,因此newColor > 255
没有任何意义(并且不起作用)。将Math.min
放在.map
回调中:
const mixColors = (color1, color2) => color1.map((num, i) => Math.min(num + color2[i], 255));
console.log(mixColors([235, 45, 0], [100, 27, 47]));