我正在使用图标字体填充具有不同符号的容器。我想知道是否有更好的方法来迭代十六进制值而不是创建一个自定义数组,并按照这样做:
var hexPlaceValue1=0, hexPlaceValue2=0;
var hexArray = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
for(var i=0;i through something;i++){
if(hexPlaceValue1 == 15) {
var $glyph = $('<div class="glyph" data-glyph-index="' + i + '">' + String('00' + hexArray[hexPlaceValue2] + hexArray[hexPlaceValue1]).slice(-3) + ';</div>');
hexPlaceValue1 = 0;
hexPlaceValue2++;
} else {
var $glyph = $('<div class="glyph" data-glyph-index="' + i + '">' + String('00' + hexArray[hexPlaceValue2] + hexArray[hexPlaceValue1]).slice(-3) + ';</div>');
hexPlaceValue1++;
}
}
显然,如果引入更多图标,这可能会导致问题(被授予,它必须是很多。)我只是想知道是否有更有效的方法来做到这一点。
答案 0 :(得分:1)
与大多数(所有?)编程语言一样,Javascript知道如何处理十六进制。
for (i=0x0; i < 0x30; i++) { print("0x0" + i.toString(16) +" = " + i) }
输出:
0x00 = 0
0x01 = 1
0x02 = 2
0x03 = 3
0x04 = 4
0x05 = 5
0x06 = 6
0x07 = 7
0x08 = 8
0x09 = 9
0x0a = 10
0x0b = 11
0x0c = 12
0x0d = 13
0x0e = 14
0x0f = 15
0x010 = 16
[...]
0x026 = 38
0x027 = 39
0x028 = 40
0x029 = 41
0x02a = 42
0x02b = 43
0x02c = 44
0x02d = 45
0x02e = 46
0x02f = 47
然后可以使用填充,请参阅google或此问题:Pad a number with leading zeros in JavaScript
答案 1 :(得分:0)
根据for
循环中的逻辑,它看起来与您想要的完全相同:
for(var i=0;i through something;i++) {
var hex = '&#x' + (0xe000|i).toString(16);
var $glyph = $('<div class="glyph" data-glyph-index="'+i+'">'+hex+';</div>');
}
只要i<4096
(0x1000),那么最重要的十六进制数字仍为e
。
答案 2 :(得分:0)
您可以迭代这样的ascii代码,而不是使用硬编码数组:
// Instead of this
// var hexArray = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
// You can use this:
for (var i=48; i<71; i++){
console.log( i, String.fromCharCode(i) );
// Skip 58 to 64 char codes as they are non alphanumeric
if (i == 57) i =64;
}
您可以在互联网上找到字符代码表,这里有一个link