1

我有这个代码来生成带有字母表的项目符号列表:

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 之后,它会显示其他字符。如果可能的话,我希望它在字母 za 列表之后向我显示,例如:

aa. option 
ab. option
ac. option
ad. option

那可能吗?有什么帮助吗?

4

1 回答 1

1

这实际上是一个相当简单的计算,但要完全正确有点繁琐。像这样的东西:

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 索引)

于 2018-11-15T16:22:35.907 回答