haytjes
|
function array_length(arr) {
var length = 0;
for(val in arr) {
if(!(val in Array.prototype))
length++;
}
return length;
}
function array_length(arr) { var length = 0; for(val in arr) { if(!(val in Array.prototype )) length++; } return length; }
'k heb je code nog een beetje aangepast, zodat hij nu effectief het aantal elementen in een array weergeeft, ook bij het gebruik van Array.prototyp();
Array.prototype.length = function() {
var length = 0;
for(var val in this) {
if(!(val in Array.prototype))
length++;
}
return length;
}
Array.prototype .length = function() { var length = 0; for(var val in this) { if(!(val in Array.prototype )) length++; } return length; }
en hier zelf in een prototype, zodat je bij alle Arrays: array.length() kan doen (vergeet de haakjes niet, of het is de gewone, niet juiste waarde) |
|
|
Thomas
|
Mja, maar die wetenschap is verder irrelevant.
Je kunt ook geen waarde opvragen van een ongeinitialiseerd element, en meestal tel je deze ook niet. Je hebt er dus niet aan... |
|
|
Fenrir
|
Net zoals in de meeste andere programmeertalen die een gescheiden Hash/Array hebben werkt dit zoals FangorN zegt. Maar het is volgens mij niet waar dat die elementen er dan niet in zitten. De javascript parser maakt de elementen volgens mij echt aan. Dus als je doet:
Dan maakt dat plaats in je geheugen voor 100 elementen. (maar dit zitten er dan nog niet in).
Als je daarentegen een Hash gebruikt wordt er maar één element aangemaakt. |
|
|
Thomas
|
Deze property klopt niet wanneer je zelf numerieke keys gaat definiëren.
var arr = new Array();
arr[0] = "test";
arr[300] = "hoi";
window.alert(arr.length); // levert 301
arr[0] = "test"; arr[300] = "hoi"; window.alert(arr.length); // levert 301
De property length bevat altijd de waarde van de hoogste numerieke index van het array plus 1, en geeft niet noodzakelijkerwijs het daadwerkelijk aantal elementen van het array weer.
Wanneer je een niet-genest array hebt, zou je het aantal elementen als volgt kunnen bepalen:
function array_length(arr) {
var length = 0;
for(val in arr) {
length++;
}
return length;
}
function array_length(arr) { var length = 0; for(val in arr) { length++; } return length; }
|
|
|