Πώς να προσαρτήσετε κάτι σε έναν πίνακα;

Πώς μπορώ να προσθέσω ένα αντικείμενο (όπως μια συμβολοσειρά ή έναν αριθμό) σε έναν πίνακα στη JavaScript;

Λύση

Χρησιμοποιήστε τη μέθοδο Array.prototype.push για να προσθέσετε τιμές σε έναν πίνακα:

Σχόλια (12)

Αν προσαρτάτε μόνο μια μεταβλητή, τότε η push() λειτουργεί μια χαρά. Αν πρέπει να προσαρτήσετε έναν άλλο πίνακα, χρησιμοποιήστε την concat():

Σχόλια (6)

Μερικές γρήγορες συγκριτικές δοκιμές (κάθε δοκιμή = 500k προσαρτημένα στοιχεία και τα αποτελέσματα είναι μέσοι όροι πολλαπλών εκτελέσεων) έδειξαν τα εξής:

Firefox 3.6 (Mac):

  • Μικρές συστοιχίες: b` είναι ταχύτερο (300ms έναντι 800ms)
  • Μεγάλοι πίνακες: είναι γρηγορότερη (500ms έναντι 900ms)

Safari 5.0 (Mac):

  • Μικροί πίνακες: b` είναι ταχύτερο (90ms έναντι 115ms)
  • Μεγάλοι πίνακες: είναι ταχύτερη (160ms έναντι 185ms)

Google Chrome 6.0 (Mac):

  • Μικροί πίνακες: Δεν υπάρχει σημαντική διαφορά (και ο Chrome είναι ΓΡΗΓΟΡΟΣ! Μόνο ~38ms !!)
  • Μεγάλοι πίνακες: **(160ms)

Μου αρέσει καλύτερα η σύνταξη arr.push(), αλλά νομίζω ότι θα ήμουν καλύτερα με την έκδοση arr[arr.length], τουλάχιστον όσον αφορά την ταχύτητα. Θα ήθελα όμως να δω τα αποτελέσματα μιας εκτέλεσης του IE.


Οι βρόχοι συγκριτικής αξιολόγησης μου:

function arrpush_small() {
    var arr1 = [];
    for (a = 0; a < 100; a++)
    {
        arr1 = [];
        for (i = 0; i < 5000; i++)
        {
            arr1.push('elem' + i);
        }
    }
}

function arrlen_small() {
    var arr2 = [];
    for (b = 0; b < 100; b++)
    {
        arr2 = [];
        for (j = 0; j < 5000; j++)
        {
            arr2[arr2.length] = 'elem' + j;
        }
    }
}

function arrpush_large() {
    var arr1 = [];
    for (i = 0; i < 500000; i++)
    {
        arr1.push('elem' + i);
    }
}

function arrlen_large() {
    var arr2 = [];
    for (j = 0; j < 500000; j++)
    {
        arr2[arr2.length] = 'elem' + j;
    }
}
Σχόλια (9)