2017-12-30 25 views
0

Ich habe eine BIP39 Passphrase mit 24 Wörtern, um meine Cryptowährung Brieftasche wiederherzustellen. Leider wird die Passphrase nicht validiert (das letzte Wort ist eine Prüfsumme). Alle Wörter in der Passphrase sind in der Liste der verfügbaren BIP39-Wörter, so ist meine erste Vermutung, dass ich die Reihenfolge von zwei benachbarten Wörtern in der Phrase/Array verwechselt habe.Iterieren durch Array und tauschen Nachbarn

Ich wollte jedes Wort in einem Array durchlaufen, mit dem benachbarten Wort tauschen, eine Funktion check(phrase) ausführen, den Austausch rückgängig machen und zum nächsten Wort wechseln.

Beispiel:

initialPhrase = 'wordOne wordTwo wordThree' 
firstAttempt = 'wordTwo wordOne wordThree' 
secondAttempt = 'wordOne wordThree wordTwo' 

Wie kann ich dies unter der Annahme, mit JS-Code, dass ich alle Wörter in einem Array haben?

Antwort

1

können Sie folgenden Code verwenden:

var words = initialPhrase.split (‘‚);

für (var i = 0; i < words.length - 1; i ++) {

Worte [i] = words.splice (i + 1, 1, Worte [i]) [0 ];

var testPhrase = words.join (''); // Ihre gewünschte Phrase

words = initialPhrase.split ('');

}

1

einschließlich rückgängig:

function check(phrase) { 
 
    //custom validator code 
 
    var phraseStr = phrase.join(' '); 
 
    console.log(phraseStr); 
 
    if (phraseStr == 'wordOne wordTwo wordFour wordThree') { 
 
    console.log('valid!'); 
 
    return true; 
 
    } 
 
    return false; 
 
} 
 

 
function getValidPhrase(phrase) { 
 
    for (i=1;i<phrase.length;i++) { 
 
    //swap 
 
    phrase[i] = phrase.splice(i-1, 1, phrase[i])[0]; 
 

 
    if (check(phrase)) { 
 
     return phrase; 
 
    } 
 
    //undo swap 
 
    phrase[i] = phrase.splice(i-1, 1, phrase[i])[0]; 
 
    } 
 
    return null; 
 
} 
 

 
var pp = getValidPhrase(['wordOne', 'wordTwo', 'wordThree', 'wordFour']);