Συμπλήρωση ενός αριθμού με κορυφαία μηδενικά σε JavaScript

Μέχρι στιγμής δεν έχει γίνει και πολύ "έξυπνο":

function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

Όταν αρχικοποιείτε έναν πίνακα με έναν αριθμό, δημιουργείται ένας πίνακας με το length να έχει οριστεί σε αυτή την τιμή, ώστε ο πίνακας να φαίνεται να περιέχει τόσα πολλά απροσδιόριστα στοιχεία. Αν και κάποιες μέθοδοι παραδειγματικών Array παραλείπουν τα στοιχεία του πίνακα χωρίς τιμές, η .join() δεν το κάνει, ή τουλάχιστον όχι εντελώς- τα αντιμετωπίζει σαν η τιμή τους να είναι η κενή συμβολοσειρά. Έτσι, λαμβάνετε ένα αντίγραφο του μηδενικού χαρακτήρα (ή ό,τι άλλο είναι το "z") μεταξύ κάθε στοιχείου του πίνακα- γι' αυτό υπάρχει ένα + 1 εκεί μέσα.

Παράδειγμα χρήσης:

pad(10, 4);      // 0010
pad(9, 4);       // 0009
pad(123, 4);     // 0123

pad(10, 4, '-'); // --10
Σχόλια (14)

function padToFour(number) {
  if (number` είναι μια συνάρτηση βέλος που μεταξύ άλλων αντικαθιστά την `function` και προτάσσεται από τις παραμέτρους της
 - Εάν μια συνάρτηση βέλους λαμβάνει μία μόνο παράμετρο, μπορείτε να παραλείψετε τις παρενθέσεις (εξ ου και `number =>`)
 - Εάν το σώμα μιας συνάρτησης βέλους έχει μία μόνο γραμμή που αρχίζει με `return` μπορείτε να παραλείψετε τις αγκύλες και τη λέξη-κλειδί `return` και απλά να χρησιμοποιήσετε την έκφραση
 - Για να μειώσω το σώμα της συνάρτησης σε μία μόνο γραμμή έκλεψα και χρησιμοποίησα μια τριμερή έκφραση
Σχόλια (10)

Δοκιμάστε:

String.prototype.lpad = function(padString, length) {
    var str = this;
    while (str.length < length)
        str = padString + str;
    return str;
}

Τώρα δοκιμάστε:

var str = "5";
alert(str.lpad("0", 4)); //result "0005"
var str = "10"; // note this is string type
alert(str.lpad("0", 4)); //result "0010"

[DEMO][1]


Στο ECMAScript 8 , έχουμε νέα μέθοδο padStart και padEnd η οποία έχει την παρακάτω σύνταξη.

'string'.padStart(targetLength [,padString]):

Οπότε τώρα μπορούμε να χρησιμοποιήσουμε

const str = "5";
str.padStart(4, '0'); // '0005'
Σχόλια (8)