Javascript 我想按字母顺序生成唯一的字母键| angularJs

Javascript 我想按字母顺序生成唯一的字母键| angularJs,javascript,angularjs,arrays,json,Javascript,Angularjs,Arrays,Json,我想按字母顺序生成键,以这样一种方式开始 AAAA 接下来是aaaab,到达aaaaz后,字符串应该是aaaba,然后是aaabb,依此类推,以便正确生成键 要创建的示例JSON var keygen={aaaaa, aaaab, aaaac .........aaaaz,aaaba ....} 我的javascript $scope.doKeyGen=function(lastValueInJSON) {

我想按字母顺序生成键,以这样一种方式开始

AAAA

接下来是
aaaab
,到达
aaaaz
后,字符串应该是
aaaba
,然后是
aaabb
,依此类推,以便正确生成键

要创建的示例JSON

 var keygen={aaaaa,
             aaaab,
             aaaac .........aaaaz,aaaba ....}
我的javascript

$scope.doKeyGen=function(lastValueInJSON)
                {  // Do something 
                   }

这对你有用。JS小提琴在这里

确保您给出的最后一个值将被命中。 否则你将进入无限循环地狱。 您还可以配置对getNext()的调用中的字母数。 但请确保在第一个值和“aaaaa”以及最后一个值“asxas”中设置的字母数相等

String.prototype.replaceAt=函数(索引,替换){
返回this.substr(0,索引)+replacement+this.substr(索引+replacement.length);
}
var json=[];
函数getNext(charCount,lastValue){
changeIndex=charCount-1;
var newValue=“”;
而(changeIndex>=0){
如果(lastValue[changeIndex]!=“z”){
var changed=最后一个值[changeIndex];
var replacechanged=String.fromCharCode(changed.charCodeAt(0)+1);
newValue=lastValue.replaceAt(changeIndex,replacechanged)
对于(var j=changeIndex+1;j
您需要使用递归函数来生成密钥。 我在这里写了一些代码,它们根据您的需求生成密钥并创建JSON

请注意我假设字母表仅为小写字母键。使用3长度字符串(aaa),也可以使用4长度,但性能会下降

您可以更改附加小提琴输入中的任何第一个键,如
'aay'
,然后代码生成下一个所有可能的键。(aaz,aba,…,zzz)。

您可以使用此选项

函数getNextKey(lastKeyCode,changeIndex) { var charCodes=[]; if(changeIndex==未定义) changeIndex=lastKeyCode.length-1; if(changeIndex-1>-1&&lastKeyCode.charCodeAt(changeIndex)==122) { lastKeyCode=getNextKey(lastKeyCode,changeIndex-1); } lastKeyCode.split(“”).forEach(函数(e){charCodes.push(e.charCodeAt())}); charCodes[changeIndex]=97+(charCodes[changeIndex]-96)%26; 返回字符串.fromCharCode.apply(0,charCodes); } //-------------------编辑(生成这样的关键点)------------ 函数生成器键(lastKey) { var json=[]; var nextKey=new数组(lastKey.length+1).join('a'); json.push(nextKey); while(nextKey!=lastKey) { json.push((nextKey=getNextKey(nextKey))) } 返回json; } //---------------------------范例---------------------------- var last=‘test’;
console.log('Last Key:'+Last+'|生成的键长度:'+generateKeys(Last.length))什么是lastValueInJson@JinsPeter不管JSON中的最后一个值是什么,我的意思是你想要一个递归函数?你想要生成JSON还是对它进行排序?@JeanJacques如果你因为生成了键而更改了正确的答案就好了我编辑了答案@Vibhorhello@anoop,然而,我最近收到了修改请求,它只增加了一个元素,所以基本上如果我给aaa,它将更改为aab,并将aab推送到JSON,我尝试编辑你的JSFIDLE,但无法,你能帮我吗?@Vibhor:我不太了解你的新需求,但当然,你可以在创建新密钥后立即推送,看到这里,我已经记录了json和注释其他密钥生成代码。希望能有帮助。
 String.prototype.replaceAt=function(index, replacement) {
        return this.substr(0, index) + replacement+ this.substr(index + replacement.length);
    }

 var json = [];
 function getNext(charCount,lastValue){
    changeIndex = charCount -1;
   var newValue = "";
     while (changeIndex >= 0){
        if(lastValue[changeIndex] !== "z"){
           var changed = lastValue[changeIndex];
           var replacechanged = String.fromCharCode(changed.charCodeAt(0)+1);
           newValue = lastValue.replaceAt(changeIndex,replacechanged)
           for(var j=changeIndex+1; j < charCount; ++j){
              newValue = newValue.replaceAt(j,"a");
           }
           return newValue;
         }
         changeIndex--;
      }
 }

 function createJSON(lastValue){
    if(!json.length){
      //var startPrefix = "aaaaa";
      json.push("aaaaa");
      while(lastValue !== json[json.length-1]){

         json.push(getNext(5,json[json.length-1]));
      }
      console.log(json);
    }
 }

 createJSON("aaabz");