Javascript 当对两个数组中的值求和时,如何在新数组中限制值?
其想法是将两种颜色的rbg值混合在一起,并保持代码干净。rgb的值不能超过255。我要做的是,在添加值之后,如果数字超过255,则将其保持在255 我尝试过的一种方法是有效的,但我觉得有重复的代码。我尝试过的另一种方法似乎是正确的,但不起作用 这就是工作的方式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];
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])这是我在别人的帮助下想到的。你的路更短。谢谢你的帮助,当一个答案解决了你的问题,你可以考虑把它标记为接受(检查左边的复选框)以表明问题得到解决: