2Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
232
232
EMPFEHLEN
-
Hallo in die Runde,
mal eine Frage an die Cracks: mit dem IN-Operator kann man offenbar in Objekten die Existenz von Werten checken. D. h. man muss nicht im Loop dadurch, sondern lässt das den IN-Operator machen. Warum geht das mit dem Array nicht auch, bzw. wie mache ich es?
Danke + Grüße
Idi
HTML-Code:<html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv='Content-Language' content='de-DE' /> <script type="text/javascript"> var div = document.createElement('div'); for (prop in div.style) { if (div.style[prop]!="") alert(prop+"="+div.style[prop]); } var arr1 = {a:'1',b:'2'}; alert('a' in arr1); var arr2 = ['a','b']; alert('a' in arr2); </script> </head> <body> </body> </html>
-
Es geht auch mit Array, aber der in-Operator prüft, ob ein Schlüssel vorhanden ist, nicht aber ein Wert. In einem Array sind die Schlüssel Zahlen!
Code javascript:1 2 3 4
var arr2 = ['a','b']; alert(0 in arr2); alert(1 in arr2); alert(2 in arr2);
Übrigens gibt es neben dem in-Operator auch die "hasOwnProperty" Methode.
Code javascript:1 2 3 4 5 6 7
var arr1 = {a:'1',b:'2'}; alert(arr1.hasOwnProperty('a')); var arr2 = ['a','b']; alert(arr2.hasOwnProperty(0)); alert(arr2.hasOwnProperty(1)); alert(arr2.hasOwnProperty(2));
Beides ist nicht exakt identisch. Wenn man weiß, was man tut, kann man beide richtig einsetzen.
Code javascript:1 2 3
var arr = {}; alert('toString' in arr); alert(arr.hasOwnProperty('toString'));
-
Hai CPoly,
beim ersten Beispiel hau ich mir getz mit die Hand vor den Detz: na klar, stimmt ja!!
Aber property hätte ich jetzt eher mit Eigenschaften im Sinne von Methoden in Verbindung gebracht.
Obwohl, na ja, beim Objekt auch irgendwie. Das letzte Beispiel verdeutlicht meinen Konflikt wohl am besten: als "property"-Wert nicht existent, aber als Methode.
Wieder was gelernt!
Merrßi+Grüße
Idi
Nachtrag: hasOwnProperty scheint auch sicherer zu sein, denn:
invalid 'in' operand stringValue
http://www.bennadel.com/blog/1918-Ja...th-Strings.htmGeändert von Netzwerkidi (02.12.11 um 19:48 Uhr)
-
Der Blog Eintrag ist einfach nur falsch. Er behauptet, es würde mit Zahlen funktionieren, erstellt aber explizit eine Instanz von der Klasse "Number". Das ist aber etwas anderes, als eine Zahl hin zuschreiben. Hätte er das mit String genauso gemacht, würde auch der in-Operator funktionieren.
Code javascript:1
var stringValue = new String("");
Der in Operator funktioniert mit allen Objekten.
Code javascript:1 2
alert(typeof ""); alert(typeof new String(""));
Edit: Das steht auch so in den Kommentaren zu dem Blogeintrag!
Nein, du musst genau aufpassen. Es heißt hasOwnProperty und nicht hasProperty! Das liefert true, wenn die Klasse diese Eigenschaft hat. Aber nicht, wenn eine der Eltern diese hat! "toString" ist eine Basis Eigenschaft von Objekten. Zwar hat jedes andere Objekt (z.B. eine Klasse Namens "Katze") auch eine toString Methode, aber hasOwnProperty ist false. Es sei denn, du überschreibst toString für deine Katze-Klasse.Geändert von CPoly (02.12.11 um 20:03 Uhr)
-
Lass mich raten, das Weizenbier ist ohne Allehohl?
Interessant, dass offenbar ein Deutscher ("Martin Mädler") "die Nadel" auf seinen Fehler hinweist
Apropos: "Die Nadel" - GUTER FILM!
MerrßiGeändert von Netzwerkidi (02.12.11 um 21:37 Uhr)
-
-
Ähnliche Themen
-
Objekt auf Existenz prüfen
Von A319 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 17.06.08, 00:13 -
Auf Datei Existenz Prüfen...
Von wOp im Forum Visual Basic 6.0Antworten: 9Letzter Beitrag: 27.07.05, 22:45 -
Dateipfad auf Existenz prüfen
Von jorgeHX im Forum JavaAntworten: 2Letzter Beitrag: 30.06.05, 14:57 -
Registryeintrag auf Existenz prüfen
Von DerStatist im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 24.03.05, 14:33 -
session_start() auf existenz prüfen ?
Von methodus im Forum PHPAntworten: 6Letzter Beitrag: 20.04.02, 22:50





Zitieren


Login





