如何在javascript中获取每个有效的十六进制代码

Mor*_*sis 5 javascript css jquery underscore.js angularjs

这是我两天前开始工作的一件小事,认为这将是一个快速的小脑问题然后生病回到吃我的午餐.但是我很挣扎.我想获得所有有效十六进制颜色代码的数组.最好不要崩溃浏览器.

这就是我到目前为止所提出的.

app.directive 'randomColor', () ->
  link: (scope) ->
    scope.colors = new Array
    col = 0x0
    while col <= 0xFFF
      if (col > 0x111 && col < 0xFFF)
        scope.colors.push '#' + col
      col++
    autocolor = (hexcode) ->
      colorChange = () ->
        $("#colorvomit").append("<span style='padding: 1px 10px 1px 10px;background-color: " +hexcode+";border: 1px solid black;'></span>")
      setTimeout(colorChange, 5000)
    _.each(scope.colors, autocolor)
Run Code Online (Sandbox Code Playgroud)

我记得使用coffescript和angular js.使用下划线库,我可以使用_.each.

所以我得到了这个结果

在此输入图像描述

你可以看到底部有很多白色方块,它会持续很长一段时间,因为它会返回无效的十六进制代码,如#1223(4位数字).

所以这是我的问题是什么是获得所有有效的十六进制颜色代码的最佳方法让我们说6长我有3长(FFF)因为它崩溃否则没有得到无效的代码.感谢您的所有帮助,我认为这将是一个有趣的问题.

我做了我的研究,无法找到类似的东西.因为我们希望它们都优先顺序,如111 112 113等...

Ash*_*ani 1

请记住,256*256*256 = 16777216,因此执行需要一些时间。

var result = '';
for(var i=0;i<256;i++)
    for(var j=0;j<256;j++)
        for(var k=0;k<256;k++)
           {r = i.toString(16);
           g = j.toString(16);
           b = k.toString(16);
             if(r.length!=1||g.length!=1||b.length!=1){
        if(r.length==1)r='0'+r;
        if(g.length==1)g='0'+g;
        if(b.length==1)b='0'+b;
        }//will use 3 length color unless one of r,g or b is to digit then 6 length will be used.
            result += r + g + b + '<br/>';
        }

document.write(result);
Run Code Online (Sandbox Code Playgroud)

如果你想把它放在数组中,那么:

var result = [];
for(var i=0;i<256;i+=16)
    for(var j=0;j<256;j+=16)
        for(var k=0;k<256;k+=16)
           {r = i.toString(16);
           g = j.toString(16);
           b = k.toString(16);
            if(r.length!=1||g.length!=1||b.length!=1){
            if(r.length==1)r='0'+r;
            if(g.length==1)g='0'+g;
            if(b.length==1)b='0'+b;
            } //will use 3 length color unless one of r,g or b is to digit then 6 length will be used.
            result.push(r + g + b);
        }
Run Code Online (Sandbox Code Playgroud)

查看演示

这是一个图形演示,颜色数量减少了,因为我们无法显示数百万种颜色。