我有以下代码可生成带有字母的项目符号列表:
angular.module('testApp',[])
.controller('testController', function($scope){
var i = 0;
$scope.options = [];
for ( var j=0;j<100;j++ ){
var x = "option "+j;
$scope.options.push(x)
}
})
.filter('numberToAlphabet', function(){
return function(number){
return String.fromCharCode(number+97);
}
})
它会生成一个列表,如:
a. option 1
b. option 2
c. option 3
...
但是问题是当字母的字母z后面时,它会显示其他字符。我希望,如果可能的话,它会在字母z之后显示类似以下的列表:
aa. option
ab. option
ac. option
ad. option
那是可能的吗? 有帮助吗?
答案 0 :(得分:2)
这实际上是一个相当简单的计算,但是有点奇怪,目的是要完全正确。像这样:
function numberToAlpha(number) {
var r = number % 26;
var d = Math.floor(number / 26);
if (d == 0) {
return String.fromCharCode(r + 97);
}
return numberToAlpha(d - 1) + String.fromCharCode(r + 97);
}
// some tests...
for(var i = 0; i < 256; i++) {
console.log(i + "\t" + numberToAlpha(i))
}
我使用类似的方法来找出相应的excel列,并为其指定了数字索引,因为它们使用相同的字体方案。
这将为您提供:
0 -> a
1 -> b
25 -> z
26 -> aa
27 -> ab
28 -> ac
52 -> ba
99 -> cv
1299 -> awz
您可以根据需要进行调整(尚不清楚是要索引0还是1索引)