我想按字母顺序生成密钥,使其以
开头AAAAA
然后下一个是aaaab
,在到达aaaaz
之后,字符串应为aaaba
然后aaabb
,依此类推,以便正确生成密钥
我要创建的示例JSON
var keygen={aaaaa,
aaaab,
aaaac .........aaaaz,aaaba ....}
我的javascript
$scope.doKeyGen=function(lastValueInJSON)
{ // Do something
}
答案 0 :(得分:1)
这对你有用。 JS Fiddle就在这里。
https://jsfiddle.net/3d789okv/7/
确保您获得的最后一个值将被命中。 否则你将陷入无限循环地狱。 您还可以配置getNext()调用中的字母数。 但请确保在第一个值中设置相等数量的字母,并且“aaaaa”和最后一个值“asxas”
listCountries = ['France', 'Spain', 'United Kingdom', 'Italy', 'Portugal', 'Ireland', 'Poland', 'Norway']
答案 1 :(得分:1)
您需要使用递归函数来生成密钥。 我在这个fiddle link中编写了一些代码,它们根据您的要求生成密钥并创建JSON。
请注意我只假设小写字母键。并且使用了3个长度的字符串(aaa),也可以使用4个长度,但性能会降低。
您可以更改附加小提琴输入中的任何第一个键,例如'aay'
然后代码生成下一个所有可能的键。(aaz,aba,.....,zzz)。
答案 2 :(得分:1)
您可以使用此
function getNextKey(lastKeyCode, changeIndex)
{
var charCodes = [];
if( changeIndex == undefined )
changeIndex = lastKeyCode.length - 1;
if(changeIndex - 1 > -1 && lastKeyCode.charCodeAt(changeIndex) == 122 )
{
lastKeyCode = getNextKey(lastKeyCode, changeIndex - 1);
}
lastKeyCode.split('').forEach(function(e){charCodes.push(e.charCodeAt())});
charCodes[changeIndex] = 97 + (charCodes[changeIndex] - 96 ) % 26;
return String.fromCharCode.apply(0, charCodes);
}
//-------------------EDIT ( GENERATE KEYS LIKE THIS )------------
function generateKeys(lastKey)
{
var json = [];
var nextKey = new Array(lastKey.length + 1 ).join('a');
json.push(nextKey);
while( nextKey != lastKey )
{
json.push( (nextKey = getNextKey(nextKey)) )
}
return json;
}
//---------------------------Example----------------------------
var last = 'test';
console.log('Last Key : '+last+' | Generated key length : '+generateKeys(last).length);