javascript überprüfen, um zu sehen, ob Wert entspricht Objekt
Habe ich ein javascript-Objekt
var obj = {
"0" : "apple",
"1" : "pear",
"2" : "orange"
}
Möchte ich überprüfen, ob "orange" ist in obj.
Gibt es eine eingebaute Funktion, die das tut? Oder sollte ich iteriert über jeden Wert von obj?
Dank.
- Wenn die Leistung ein Problem ist, halten einer parallelen Objekt-Strom, der sieht aus wie
{"apple": true, "pear": true, "orange": true}
. Dann können Sie ein sehr schnelles"apple" in parallelObj
zu tun Existenz überprüft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Durchlaufen:
Nun, dass "hasOwnProperty" test ist, um sicherzustellen, dass Sie nicht stolpern über die geerbten Eigenschaften aus dem Prototyp. Dass könnte nicht wünschenswert sein, in einigen Fällen, und wirklich, es ist eines der Dinge, die Sie Art verstehen müssen, um zu wissen, für sicher, ob Sie tun oder nicht wollen, dass test. Eigenschaften, die Sie abholen von einem Objekt im Prototyp kann manchmal Dinge, die es abgelegt, die von verschiedenen Bibliotheken. (Ich denke, die ES5-standard bietet für Möglichkeiten, um zu Steuern, ob solche Eigenschaften sind "iterierbar", aber in der realen Welt gibt es immer noch IE7.)
hasOwnProperty
- und 0,5 für die Lesbarkeit.Object.prototype.hasOwnProperty.call(obj, k)
.Es gibt keine eingebaute Funktion, um dies zu tun, würden Sie haben zu prüfen, jede Eigenschaft.
Auch durch die Blicke von Ihrem Objekt, es sollte ein array statt eines Objekts. Wenn das der Fall ist wäre es etwas leichter zu Durchlaufen und die Werte und geringfügig effizienter.
obj[id] == value
zuobj.hasOwnProperty(id) && obj[id] == value
. Berücksichtigen Sie auch die Verwendung===
für strikte Gleichheit statt==
für lose Gleichheit.Könnten Sie Aussehen will bei jQuery.inArray. Denke, es funktioniert für Objekte aswell.