[英]How to efficiently/quickly generate hex strings of all colors in JavaScript
我最初嘗試生成所有顏色值需要大約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 ]
想知道如何快速生成所有顏色,或者這實際上是最快的方法,因為有大量數據。
所有值都達到#FFFFFF? 漂亮的版本:
Array(0xFFFFFF).fill(0).map((x, y) => (x + y).toString(16).padStart(6, '0'))
性能(英語)版本:
const colors = (_c = []) => {
for (let i=0xFFFFFF; i>=0; --i)
_c[i] = i.toString(16).padStart(6, '0');
return _c;
}
我認為這不會真的很快,但是您可以做得更簡單。
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.