Javascript 当对两个数组中的值求和时,如何在新数组中限制值?

Javascript 当对两个数组中的值求和时,如何在新数组中限制值?,javascript,arrays,addition,Javascript,Arrays,Addition,其想法是将两种颜色的rbg值混合在一起,并保持代码干净。rgb的值不能超过255。我要做的是,在添加值之后,如果数字超过255,则将其保持在255 我尝试过的一种方法是有效的,但我觉得有重复的代码。我尝试过的另一种方法似乎是正确的,但不起作用 这就是工作的方式 const mixColors = (color1, color2) => { let red = color1[0] + color2[0]; let green = color1[1] + color2[1];

其想法是将两种颜色的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
回调中:

constmixcolors=(color1,color2)=>color1.map((num,i)=>Math.min(num+color2[i],255));

log(mixColors([235,45,0],[100,27,47])
您的
newColor
是一个数组,因此
newColor>255
没有意义(也不起作用)。将
Math.min
放在
.map
回调中:

constmixcolors=(color1,color2)=>color1.map((num,i)=>Math.min(num+color2[i],255));

log(mixColors([235,45,0],[100,27,47])哦,酷。我还没学数学呢<代码>const mixColors=(color1,color2)=>{const newColor=[];color1.map((val,idx)=>{if(val+color2[idx]>255){newColor.push(255);}else{newColor.push(val+color2[idx]);};console.log('arr',newColor);};混合颜色([235,45,0],[100,27,47])const mixColors=(color1,color2)=>{const newColor=[];color1.map((val,idx)=>{if(val+color2[idx]>255){newColor.push(255);}else{newColor.push(val+color2[idx]);};console.log('arr',newColor);};混合颜色([235,45,0],[100,27,47])