javascript - 如何在 JavaScript 中高效/快速生成所有颜色的十六进制字符串

标签 javascript string

我最初尝试生成所有颜色值大约需要 8 秒才能运行:

var colors = []

var start = Date.now()

for (var a = 0; a < 16; a++) {
  for (var b = 0; b < 16; b++) {
    for (var c = 0; c < 16; c++) {
      for (var d = 0; d < 16; d++) {
        for (var e = 0; e < 16; e++) {
          for (var f = 0; f < 16; f++) {
            colors.push(color(a, b, c, d, e, f))
          }
        }
      }
    }
  }
}

var end = Date.now()

console.log('time', end - start + 'ms')
console.log(colors)

function color(a, b, c, d, e, f) {
  return String(a)
    + String(b)
    + String(c)
    + String(d)
    + String(e)
    + String(f)
}

输出是这样的:

node gen-color
time 7906ms
[ '000000',
  '000001',
  '000002',
  '000003',
  '000004',
  '000005',
  '000006',
  '000007',
  '000008',
  '000009',
  '0000010',
  '0000011',
  '0000012',
  '0000013',
  '0000014',
  '0000015',
  '000010',
  '000011',
  '000012',
  '000013',
  '000014',
  '000015',
  '000016',
  '000017',
  '000018',
  '000019',
  '0000110',
  '0000111',
  '0000112',
  '0000113',
  '0000114',
  '0000115',
  '000020',
  '000021',
  '000022',
  '000023',
  '000024',
  '000025',
  '000026',
  '000027',
  '000028',
  '000029',
  '0000210',
  '0000211',
  '0000212',
  '0000213',
  '0000214',
  '0000215',
  '000030',
  '000031',
  '000032',
  '000033',
  '000034',
  '000035',
  '000036',
  '000037',
  '000038',
  '000039',
  '0000310',
  '0000311',
  '0000312',
  '0000313',
  '0000314',
  '0000315',
  '000040',
  '000041',
  '000042',
  '000043',
  '000044',
  '000045',
  '000046',
  '000047',
  '000048',
  '000049',
  '0000410',
  '0000411',
  '0000412',
  '0000413',
  '0000414',
  '0000415',
  '000050',
  '000051',
  '000052',
  '000053',
  '000054',
  '000055',
  '000056',
  '000057',
  '000058',
  '000059',
  '0000510',
  '0000511',
  '0000512',
  '0000513',
  '0000514',
  '0000515',
  '000060',
  '000061',
  '000062',
  '000063',
  ... 16777116 more items ]

想知道如何快速生成所有颜色,或者这是否实际上是最快的方法,因为有大量数据。

最佳答案

我认为它不会很快,但你可以做得更简单。

function allColors() {
  var num = 256 * 256 * 256, colors = [];
  var zeros = "000000";
  for (var i = 0; i < num; i++) {
    let str = i.toString(16);
    colors.push(zeros.slice(str.length) + str);
  }
  return colors;
}

关于javascript - 如何在 JavaScript 中高效/快速生成所有颜色的十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605056/

相关文章:

javascript - .length 的事件监听器

javascript - 先锚定标签href,然后onclick

javascript - 使用 Jquery 根据输入显示和隐藏元素

c++ - 在 C++ 中通过赋值初始化自己的 String 类

java - 常量池 (JVM JDK 6) 中的 “a” 与 'new String(“b” )' (渴望真相)

javascript - Chrome 扩展 : open new tab from a form in popup

javascript - "All the digits should not be same for a mobile number"的正则表达式

string - Delphi需要释放/收缩字符串吗?

c# 替换字符串函数不返回预期结果

r - 在 R 中用 n 个单词拆分字符串