对 2 个数组的值求和时,如何限制新数组中的值?
When summing values from 2 arrays how can I cap the value in the new array?
我的想法是将两种颜色的 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]));
我的想法是将两种颜色的 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]));