Javascript将4个整数放入RGBA范围

Javascript将4个整数放入RGBA范围,javascript,colors,range,Javascript,Colors,Range,我有一个函数,在RGBA范围内放置4个整数。换句话说,它取4个整数,将前3个数放在8位范围内(0-255)(十进制不重要),将第4个数放在0-1范围内。 然后将填充样式设置为该颜色。(这一切都发生在函数中很重要,因为我想对数字使用随机数学运算) 代码如下: function FillColor(r,g,b,a){ if (r > 255){r = 255;} if (g > 255){g = 255;} if (b > 255){b = 255;}

我有一个函数,在RGBA范围内放置4个整数。换句话说,它取4个整数,将前3个数放在8位范围内(0-255)(十进制不重要),将第4个数放在0-1范围内。 然后将填充样式设置为该颜色。(这一切都发生在函数中很重要,因为我想对数字使用随机数学运算)

代码如下:

function FillColor(r,g,b,a){
    if (r > 255){r = 255;}
    if (g > 255){g = 255;}
    if (b > 255){b = 255;}
    if (a > 1){a = 1;}

    if (r < 0){r = 0;}
    if (g < 0){g = 0;}
    if (b < 0){b = 0;}
    if (a < 0){a = 0;}

    ctx.fillStyle = "rgba(" + r + "," + g + "," + b + "," + a + ")";
}
函数FillColor(r,g,b,a){
如果(r>255){r=255;}
如果(g>255){g=255;}
如果(b>255){b=255;}
如果(a>1){a=1;}
如果(r<0){r=0;}
如果(g<0){g=0;}
如果(b<0){b=0;}
如果(a<0){a=0;}
ctx.fillStyle=“rgba(“+r+”、“+g+”、“+b+”、“+a+”);
}

我的问题是,它看起来不必要的长,它主要只是重复自己。有更好的方法吗?

您可以使用三元运算符:

 r = (r > 255) ? 255 :(r < 0 ) ? 0 : r
r=(r>255)?255:(r<0)?0:r
例如:


函数FillCOllor(r){
r=(r>255)?255:(r<0)?0:r
console.log(r)
}
点击
//您的代码:
/*函数FillColor(r,g,b,a){
如果(r>255){r=255;}
如果(g>255){g=255;}
如果(b>255){b=255;}
如果(a>1){a=1;}
如果(r<0){r=0;}
如果(g<0){g=0;}
如果(b<0){b=0;}
如果(a<0){a=0;}
ctx.fillStyle=“rgba(“+r+”、“+g+”、“+b+”、“+a+”);
}*/
//更新的功能(假设您可以使用ES6/ES2015):
函数FillColor(r,g,b,a){
常数rgb=(v)=>v<0?0:v>255?255:v;
常数α=a<0?0:a>1?1:a;
//您可以用“ctx.fillStyle”替换这个“return”,但在本例中,将这些值注销是不起作用的。
返回`rgba(${rgb(r)},${rgb(g)},${rgb(b)},${a})`;
}
//更新的函数(假设您已绑定到ES5):
函数FillColorEs5(r,g,b,a){
var rgb=函数(v){
返回v<0?0:v>255?255:v;
}
varα=a<0?0:a>1?1:a;
//这里也是一样……你可以用“ctx.fillStyle”代替“return”。
返回“rgba”(“+rgb(r)+”,“+rgb(g)+”,“+rgb(b)+”,“+alpha+”)”;
}
//示例运行函数:
log(FillColor(1,2354,0.1));
log(FillColorEs5(1,2354,0.1))请尝试以下操作:

function FillColor(r, g, b, a) {
  for (let i = 0; i < arguments.length; i++) {
    if (i === 3) arguments[i] = Math.min(Math.max(parseInt(arguments[i]), 0), 1);
    else arguments[i] = Math.min(Math.max(parseInt(arguments[i]), 0), 255);
  }

  ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${a})`;
}
函数FillColor(r,g,b,a){
for(设i=0;i
你说的长是什么意思?如果要减少行数,可以使用三元运算符减少行数
function FillColor(r, g, b, a) {
  for (let i = 0; i < arguments.length; i++) {
    if (i === 3) arguments[i] = Math.min(Math.max(parseInt(arguments[i]), 0), 1);
    else arguments[i] = Math.min(Math.max(parseInt(arguments[i]), 0), 255);
  }

  ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${a})`;
}