对 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]));