Array Re-Indexing in JavaScript funktioniert nicht mit den Standard-Methoden eines Array Objects.

var arr = new Array();
arr[0] = "Hund";
arr[5] = "Katze";
arr[8] = "Maus";

// Do something like this ?!?!
alert(arr[0]);
alert(arr[1]);
alert(arr[2]);

Die jQuery Variante, falls jQuery bereits im Projekt geladen ist:

arr = $.map(arr, function(o) {
    return o;
});

Sollte kein jQuery zur Verfügung stehen, bleibt immer noch die Möglichkeit sich eine Funktion zu schreiben, welche man aber aufgrund der “Power von JavaScript” auch als Prototyp implementieren kann:

Array.prototype.reindex = function() {
    var tmpArr = [], tmp;
    while (this.length != 0) {
        tmp = this.pop();
        if (typeof tmp !== "undefined") tmpArr.push(tmp);
    }
    for (var i = 0; i < tmpArr.length; i++) this.push(tmpArr[i]);
};

Dank des Prototypings können wir alle Array Objekte zur Laufzeit manipulieren und eine weitere Methode “reindex” hinzufügen. Die Verwendung ist anschließend denkbar einfach:

var arr = new Array();
arr[0] = "Hund";
arr[5] = "Katze";
arr[8] = "Maus";

arr.reindex();

// Do something like this!
alert(arr[0]);
alert(arr[1]);
alert(arr[2]);
Categories: JavaScript

0 Comments

Leave a Reply