Moin,
Ich muss gestehen, dass ich diese Funktion einfach nur kopiert hatte, und selbst auch nicht einsetze. Sie sollte eher als Beispiel dienen.
Probleme dieser Funktion:
- p ist eine globale Variable und überschreibt Werte von vorhandene Variablen gleichen Namens
Ich dachte Variablen sind nur, wenn sie mit var
definiert werden global?
- arr.length wird in jedem Schleifendurchlauf neu ermittelt
Was eigentlich nur tragisch ist, wenn das Array sehr viele Elemente hat. Dadurch eingebüßte Performanz sollte doch nicht signifikant sein, oder?
- der Vergleichstest ist nicht typgenau. Man fällt auf die Nase, wenn zwischen beispielsweise 4 und '4' unterscheiden werden muß
Das ist mir auch aufgefallen. Allerdings ist das in diesem Fall relativ Wurst, da classList ja in jedem Fall ein Array vom Typ string ist.
- Array.prototype.indexOf ist nativ vorhanden, man braucht obiges nur als Fallback für Alt-Browser
Oha, das wusste ich nicht...
var inArray = (function () {
[...]
})();
Wie genau wäre diese Variable (eigentlich ein Objekt, oder?) zu verwenden? In etwa so?
~~~javascript
needle = "test";
haystack = array("foo", "bar", "fuzz", "test");
result = inarray(needle, haystack);
alert(result);
Grüße Marco