in_array für Javascript
Vom 31. März 2007, 11:38 Uhr
Nachdem mir die vielen Funktionen über Google zu kompliziert waren, hier die PHP-Funktion in_array für JavaScript:function in_array(item,arr) {
for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
return false;
}Kommentare
-
Richard schrieb am 14.04.2007:
mal ehrlich, war diese errungenschaft jetzt so erwähnenswert?
-
Dodwin schrieb am 14.04.2007:
Nunja... Über Google fandest du meist nur sehr viel längere Funktionen.
Dabei geht's auch so kurz und simpel...
Sowas braucht man immer wieder. Warum also nicht veröffentlichen? -
Jeena Paradies schrieb am 03.05.2007:
Ich hätte das eher "the JavaScipt way" mit der erweiterung des Array Objektes gelöst. So wie PHP das macht ist es furchtbar.
Array.prototype.in_array = function(needle) {
for(var i=0; i < this.length; i++) if(this[ i] === needle) return true;
return false;
}var a = [1,2,3,4,5];
alert(a.in_array(4));
alert(a.in_array(6)); -
quendolin schrieb am 13.09.2007:
Hallo dodwin, super Seite! Die Funktion ist wirklich praktisch. Ich würde dir aber empfehlen, dich mal hinzusetzen und etwas mit CSS zu beschäftigen, wenn du hier deine Web-Arbeiten zur Schau stellst. Im IE6 sollte es schon funktionieren ;))
Links ist der blaue Rand versetzt, der Text steht über den schwarzen Strich in der Mitte und rechts in der Mitte ist überhaupt kein Schatten!
Screenshot -
Jeena Paradies schrieb am 13.09.2007:
Wer den IE nutzt, der will es ja nicht anders, quendolin.
-
Dodwin schrieb am 13.09.2007:
Also diese Webseite hier habe ich im Firefox, Opera, IE 7, IE 6 und sogar IE 5 getestet.
Ich kann das Problem mit dem verschobenen Rändern nicht nachvollziehen...
Welche genau Version (eventl. Update?) benutzt du?
Irgendwelche IE-Spielereichen dran (Toolbars oder was es für IE alles gibt?)Und Jeena stimmt schon was du sagst, aber ich denke dass so eine Webseite auch im IE funktionieren sollte ;)
-
quendolin schrieb am 13.09.2007:
Nö, frisch installiertes WinXP SP2 mit IE6. Keine Toolbars. Allerdings keine Standardauflösung, da in virtueller Maschine laufend
-
Tom schrieb am 12.03.2008:
Array.prototype.in_array = function(needle) {
for(var i=0; i < this.length; i++) if(this[ i] === needle) return true;
return false;
}var a = [1,2,3,4,5];
alert(a.in_array(4));
alert(a.in_array(6));Das funktioniert bei mir nicht.
Scheinbar wird das Arrayobject als solches überschrieben, weil ich keinerlei Funktionen des Array-Objects verwenden kann, und diverse Daten nach der Definition der Funktion weg sind
...? -
Tom schrieb am 12.03.2008:
Array.prototype.in_array = function(needle) {
for(var i=0; i < this.length; i++) if(this[ i] === needle) return true;
return false;
}var a = [1,2,3,4,5];
alert(a.in_array(4));
alert(a.in_array(6));Ich habs !!
Dieses Beispiel funktioniert bei mehrdimensionalen Array, so wie ich das verwenden will nicht,
alsoHansi = new Array;
Hansi[0] = new Array;
Hansi[1] = new Array; -
Jeena Paradies schrieb am 12.03.2008:
naja eigentlich sollte das schon funktionieren solange du zwei Arrays vergleichen möchtest:
var a = [ [1,2,3], [4,5,6]]; // dein mehrdimmensionales Array
alert( a.in_array( [4,5,6] ) ); // sollte true ergeben -
Dodwin schrieb am 12.03.2008:
Klappt leider nicht so wie du es dir vorstellst Jeena.
if ([1,2] == [1,2]) ...
=> gibt nicht true aus. Kann ich aber nicht wirklich nachvollziehen.
Zur Funktion bei mehrdimensionalen Arrays bräuchte man eine rekursive Funktion:Array.prototype.in_array = function(needle) {
for(var i=0; i < this.length; i++)
if(this[ i] == needle) return true;
else if (this[ i].in_array) { // Überprüft ob es ein Array ist, mittels der eigenen Funktion
if (this[ i].in_array(needle)) return true; // Rekursiver Aufruf, return-Wert wird überprüft
}
return false;
}var a = [1,2,[3,4],5,6];
alert(a.in_array(1)); // gibt für die Werte 1 bis 6 true aus. -
Tom schrieb am 12.03.2008:
Naja relativ stressig
Was ist wenn man wieder eine Dimension mehr brauch, müsste man die Funktion erneut umschreiben.
Schlussendlich ist diese Variantefunction in_array(item,arr) {
for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
return false;
}vielleicht garnicht so schlecht.
lg aus Wien
-
Dodwin schrieb am 12.03.2008:
Nein die oben genannte Funktion muss nicht mehr umgeschrieben werden. Sie ruft sich bei mehrdimensionalen Arrays selber auf.
D.h.:
var a = [1,2,[3,4],5,6,[7,[8,[9],10,[11,[12]]]]];
alert(a.in_array(12));gibt true für 1-12 aus. Weitere Dimensionen sind ebenfalls kein Problem.
Die Kommentare sind für diesen Eintrag geschlossen.
- Blog
in_array für Javascript
Dodwin reloaded - Links
SELFHTML-Doku
LEO-Wörterbuch
RSS Feed mit News
Valid XHTML 1.0 Strict
Valid CSS 2.0- Copyright © 2007
by www.dodwin.de
Impressum & Kontakt



