我最初写出每一列和每一行,然后尝试进一步重构它。

var r0 = (r == 0);
var r1 = (r == 1);
var r2 = (r == 2);
var r3 = (r == 3);
var r4 = (r == 4);
var r5 = (r == 5);
if (c == 0) {
  if (r0) ctx.fillStyle = "#9fc30d";
  if (r1) ctx.fillStyle = "#d13d42";
  if (r2) ctx.fillStyle = "#1bf839";
  if (r3) ctx.fillStyle = "#6776ef";
  if (r4) ctx.fillStyle = "#d13e9e";
  if (r5) ctx.fillStyle = "#339ca6";
}
if (c == 1) {
  if (r0) ctx.fillStyle = "#43f7ac";
  if (r1) ctx.fillStyle = "#8b97b5";
  if (r2) ctx.fillStyle = "#0f2aa5";
  if (r3) ctx.fillStyle = "#16c7b9";
  if (r4) ctx.fillStyle = "#9a02fc";
  if (r5) ctx.fillStyle = "#74c11c";
}


有没有办法像我对row那样将ctx.fillStyle放入变量中?
仅供参考:还有更多列,但我在这里只写了2列。

最佳答案

您可以使用2D数组,并使用c作为第一索引,使用r作为第二索引。

var fillStyle = [
        ["#9fc30d", "#d13d42", "#1bf839", "#6776ef", "#d13e9e", "#339ca6"],
        ["#43f7ac", "#8b97b5", "#0f2aa5", "#16c7b9", "#9a02fc", "#74c11c"]
    ];

// usage
ctx.fillStyle = fillStyle[c][r];

10-04 22:24