2017-07-10 3 views
0

Das ist wahrscheinlich eine Frage für Anfänger - aber ich kann es nicht herausfinden.Wie man rekursiv Zahlen vor dem Eingabewert hinzufügt

Ich habe einen Eingabetext mit minlegth 9, und ich habe so etwas wie dies zu tun:

Wenn der Benutzer nur eine Nummer, muss ich einige "0" vor dieser Nummer hinzufügen value.length == 9

Example: 
123 => 00000
zu erreichen

Ich benutze Angular 2 Eingabeformulare und eine Pipe, um das Ergebnis zu transformieren.

Kann jemand helfen?

transform(val) { 
     var standardLength = "000000000"; 
     return (standardLength + val).slice(-standardLength.length); 
    } 

Vielen Dank an alle:


Here ich die Lösung gefunden habe!

+1

Zeigen Sie den Code, was Sie bisher versucht haben? – SaiUnique

+0

Mögliches Duplikat von [Wie kann ich einen Wert mit führenden Nullen auffüllen?] (Https://stackoverflow.com/questions/1267283/how-can-i-pad-a-value-with-leading-zeros) –

+0

Mögliche Duplikate von [Kann nicht an 'ngModel' binden, da es keine bekannte Eigenschaft von 'input' ist] (https://stackoverflow.com/questions/38892771/cant-bind-to-ngmodel-since-it-isnt- eine bekannte Eigenschaft der Eingabe –

Antwort

0
transform(val){ 
    let zeros = "000000000"; 
    return zeros.concat(val).slice(Math.min(val.toString().length * -1,-9)); 
} 
0
number=("0".repeat(9)+number).substr(-9); 

Einfach auf den Eingangswert bei Änderung anwenden.

0

Wenn die gewünschte Länge immer statisch ist (hier 9), ist dies die einfachste Methode.

num = [1, 11, 111, 1111, 11111]; 
 
for (var i = 0; i < 5; i++) { 
 
    console.log(("000000000" + num[i]).substr(-9,9)); 
 
}


hoffe, das hilft!

0

Ihre Methode ist nicht optimal.

Sie können die Slice() Methode verwenden, um in Ihre Zeichenfolge zu setzen, was Sie wollen.

d.h .:

('0' + '').slice(-2) 
0
function pad(num, size) { 
    var s = num+""; 
    while (s.length < size) s = "0" + s; 
    return s; 
} 

// usage 
pad(123, 9)