mehdimensionales array

deusfalsus

Erfahrenes Mitglied
1. So schön wie tutorials.de aussieht (geiles neues design!), so schlecht funktioniert nach wie vor die Suchfunktion

2. wie kann ich mehrdimensionale arrays zählen?


Beispiel:

var test= new array();
test[0] = new array(2);
test[0][0]= 1;
test[0][1]= 1;

alert(test.length);



laut selfhtml müßte das gehen, allerdings steht da nicht, ob bei mehrdimensionalen array irgendwas zu beachten ist.
 
Hi!

Die length-Eigenschaft bezieht sich natürlich immer auf das Array, von dem du es abfragst.
Code:
var test= new Array(); // Array muss man gross schreiben
test[0] = new Array(2);
test[0][0]= 1;
test[0][1]= 1;
Wenn du nun test.length abfragst, dann gibt er dir natürlich auch nur die Anzahl von Elementen im Array test aus (in diesem Fall 1, da nur ein Element mit dem Index 0 existiert). Alle weiteren Array-Ebenen sind ja wiederum einzelne Array-Objekte, die du selber abfragen musst.

Falls du nur "Werte" zählen willst, die nicht vom Type Array (in JavaScript sind Arrays ebenfalls Objekte aber man kann den Unterschied am Constructor ersehen) sind, könntest du das Array-Objekt um eine Funktion erweitern:
Code:
<script language="JavaScript">
Array.prototype.countall = function() {
    this.__endelements__ = 0;
    for(i in this) {
        if (this[i].constructor == Array) {
            this.__endelements__ += this[i].countall();
        } else if (typeof(this[i]) != "function" && i != "__endelements__") {
            this.__endelements__++;
        }
    }
    return this.__endelements__;
}

var test= new Array();
test[0] = new Array(2);
test[0][0]= 1;
test[0][1]= 1;

test[1] = new Array(2);
test[1][0] = new Array();
test[1][0][0] = 1;
test[1][0][1] = 1;
test[1][0][2] = {eins: "eins", zwei: "zwei"}; // ACHTUNG! Das ist ein Objekt und somit werden die Elemente nicht gezählt.
test[1][1]= 1;
test[1][2]= "hallo";
test["ehh"] = "asd";

alert(test.countall());

</script>
...womöglich brauchst du sowas?

Gruss
Jan
 
Zurück