Javascript 我想按字母顺序生成唯一的字母键| angularJs
我想按字母顺序生成键,以这样一种方式开始 AAAA 接下来是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) {
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");