我希望生成按字母顺序排列的键,使其开始于
aaaaa
然后下一个是aaaab,在到达aaaaz之后,字符串应该是aaaba,然后是aaabb等等,这样键就能正确地生成
我要创建的示例JSON
var keygen={aaaaa,
aaaab,
aaaac .........aaaaz,aaaba ....}我的javascript
$scope.doKeyGen=function(lastValueInJSON)
{ // Do something
}发布于 2017-05-10 10:28:35
这对你有用。JS Fiddle来了
https://jsfiddle.net/3d789okv/7/
确保你最后的价值会被击中。否则,你将进入无限循环地狱。还可以在调用getNext()中配置字母数。但是,请确保在第一个值和"aaaaa“和最后一个值"asxas”中设置相同数量的字母。
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");发布于 2017-05-10 10:29:16
您需要使用递归函数来生成密钥。我在这个fiddle link中编写了一些代码,它根据您的需求生成密钥,并创建JSON。
,请注意,,我只假定小写字母键。而使用3长字符串(aaa),也可以使用4长,但性能下降。
您可以更改任何第一个键的输入在附加小提琴,如'aay'然后代码生成下所有可能的键。
发布于 2017-05-10 10:58:40
你可以用这个
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);
https://stackoverflow.com/questions/43887475
复制相似问题