You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写精简算法生成指定规则的马卡龙浅色系十六进制颜色数组?

实现思路

你提供的颜色数组本质是固定RGB分量的全排列,没有复杂的生成逻辑,无需用switch case实现:

  • 红色(R)分量可选值:ff、cc
  • 绿色(G)分量可选值:aa、bb、cc、dd、ee、ff
  • 蓝色(B)分量可选值:cc、dd、ee、ff

三者全排列总数量为 264=48,和你给出的数组长度完全匹配。

代码实现

基础生成版本(顺序可自由调整)

function generatePastelColors() {
  const R = ['ff', 'cc']
  const G = ['aa', 'bb', 'cc', 'dd', 'ee', 'ff']
  const B = ['cc', 'dd', 'ee', 'ff']
  // 三层遍历拼接所有组合
  return R.flatMap(r => 
    G.flatMap(g => 
      B.map(b => r + g + b)
    )
  )
}

const pastelColor = generatePastelColors()

完全匹配原数组顺序版本

如果需要和你给出的数组顺序完全一致,调整遍历顺序即可:

function generatePastelColorsMatchOriginal() {
  const R = ['ff', 'cc']
  const G = ['aa', 'bb', 'cc', 'dd', 'ee', 'ff']
  const BForRFF = ['cc', 'dd', 'ee', 'ff'] // R=ff时B从小到大
  const BForRCC = ['ff', 'ee', 'dd', 'cc'] // R=cc时B从大到小
  const result = []
  // 处理R=ff的部分
  BForRFF.forEach(b => {
    G.forEach(g => result.push('ff' + g + b))
  })
  // 处理R=cc的部分
  BForRCC.forEach(b => {
    G.forEach(g => result.push('cc' + g + b))
  })
  return result
}

以上生成的数组和你硬编码的数组完全一致,代码体积远小于硬编码和switch case方案。

内容的提问来源于stack exchange,提问作者Tenma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:39:00