OOP/DOM-Scripting JavaScript - Praxistutorial 2 - in_array
1. Die Abschnitte
- Einführung
- Grundprinzip
- in_array
- array_keys
- array_reverse
2. Ein erster Versuch
Hinweis
Für diejenigen, die mit PHP noch nicht so vertraut sind, ein kurzer Hinweis. Mit der Funktion in_array
kann man bei PHP
überprüfen, ob ein bestimmter Wert in einem Array enthalten ist. Im Erfolgsfall bekommt man ein true
zurück geliefert.
Array.prototype.in_array = function (needle)
{
for (var i in this)
{
if (this[i] == needle)
{
return true;
}
}
}
if (arr_1.in_array('bla'))
{
alert ('JAU');
}
Erläuterung
Wegen der Objektstruktur in JavaScript benötigen wir im Gegensatz zu PHP nur die berühmte "Nadel" (needle
) als Parameter
für unsere Methode. Den "Heuhaufen" (haystack), in dem wir suchen wollen, übergeben wir direkt beim Zugriff mittels
arr_1.in_array
. Somit ist this
also ein Verweis auf das "eigene" Array-Objekt, in diesem Fall das
arr_1 = new Array();
(siehe Einführung). Ein break
in der Schleife benötigen
wir nicht, da die Funktion im Erfolgsfall ja automatisch durch das return true;
beendet wird. Ach ja, die
for-in
-Schleife benutzen wir, um auch mit "assoziativen" Arrays arbeiten zu kömmen. Probiert es mal mit
arr_3
aus.
3. So weit, so gut
Aber! Es ist nicht sauber! Gut, es funktioniert aber die Sache hat genau genommen einen Haken. Kommentiert mal spaßeshalber die Bedingung aus und baut folgenden Code ein.
alert (typeof this[i] + '-' + this[i]);
Jetzt bekommt ihr Ausgaben wie string-blubb
oder string-blubber
zu Gesicht. Und ganz zum Schluss erscheint auf
einmal dieses hier.
function-function (needle)
{
for (var i in this)
{
...
}
}
Erläuterung
Hier könnt ihr also wunderbar sehen, was JavaScript mit Methoden macht, die man per prototype
dem Array-Objekt hinzufügt.
Sie werden, wie ich schon sagte, einfach angehängt, und zwar mit einem "assoziativen" Index, wobei Selbiger der Funktionsname ist. Man
muss sich jetzt also zum Beispiel arr_1
(und alle andern auch) so vorstellen:
var arr_1 = new Array ();
arr_1[0] = 'blubb';
arr_1[1] = 'blubber';
arr_1[2] = 'bla';
arr_1[3] = 'schwall';
arr_1['in_array'] = 'function ()...';
Um das auch zu sehen, müsst ihr nur obige alert
-Meldung nur um ein i
ergänzen. Das sähe dann in Gänze so aus:
alert (i + '-' + typeof this[i] + '-' + this[i]);
.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt