Wie prüfe ich, ob ein bestimmter Schlüssel in einem JavaScript-Objekt oder -Array existiert?
Wenn ein Schlüssel nicht existiert und ich versuche, auf ihn zuzugreifen, wird dann "false" zurückgegeben? Oder wird ein Fehler ausgegeben?
Wie prüfe ich, ob ein bestimmter Schlüssel in einem JavaScript-Objekt oder -Array existiert?
Wenn ein Schlüssel nicht existiert und ich versuche, auf ihn zuzugreifen, wird dann "false" zurückgegeben? Oder wird ein Fehler ausgegeben?
El akzeptierte Antwort bezieht sich auf Objekt . Vorsicht bei der Verwendung der in
Betreiber en Array um Daten anstelle von Schlüsseln zu finden:
("true" in ["true", "false"])
// -> false (Because the keys of the above Array are actually 0 and 1)
Zum Testen vorhandener Elemente in einem Array: Der beste Weg, um herauszufinden, ob ein Element in einem JavaScript-Array ist?
Drei Möglichkeiten zu prüfen, ob eine Eigenschaft in einem Javascript-Objekt vorhanden ist:
!!obj.theProperty
true
für alle außer den false
WerttheProperty
' in objobj.hasOwnProperty('theProperty')
toString
Methode, 1 und 2 geben darauf true zurück, während 3 darauf false zurückgeben kann).Referenz:
!!obj.theProperty schlägt fehl, wenn der Wert undefiniert ist. Bsp: var a = {a : undefined, b : null}; !!a.a **will return false**
Wenn Sie Folgendes verwenden unterstrich.js Bibliothek werden Objekt/Array-Operationen einfach.
In Ihrem Fall kann die Methode _.has verwendet werden. Beispiel:
yourArray = {age: "10"}
_.has(yourArray, "age")
gibt zurück. wahr
Aber,
_.has(yourArray, "invalidKey")
gibt zurück. falsch
Antwort:
if ("key" in myObj)
{
console.log("key exists!");
}
else
{
console.log("key doesn't exist!");
}
Erläuterung:
El in
Operator prüft, ob der Schlüssel im Objekt vorhanden ist. Wenn Sie geprüft haben, ob der Wert undefiniert ist: if (myObj["key"] === 'undefined')
können Sie auf Probleme stoßen, weil in Ihrem Objekt möglicherweise ein Schlüssel mit der undefined
Wert.
Aus diesem Grund ist es viel besser, zunächst die in
Operator und vergleichen Sie dann den Wert, der sich innerhalb des Schlüssels befindet, sobald Sie wissen, dass er existiert.
Este keyExists(key, search)
kann zum einfachen Nachschlagen eines Schlüssels in Objekten oder Arrays verwendet werden!
Übergeben Sie einfach den Schlüssel, den Sie suchen, und suchen Sie obj (das Objekt oder Array), in dem Sie ihn finden wollen.
function keyExists(key, search) {
if (!search || (search.constructor !== Array && search.constructor !== Object)) {
return false;
}
for (var i = 0; i < search.length; i++) {
if (search[i] === key) {
return true;
}
}
return key in search;
}
// How to use it:
// Searching for keys in Arrays
console.log(keyExists('apple', ['apple', 'banana', 'orange'])); // true
console.log(keyExists('fruit', ['apple', 'banana', 'orange'])); // false
// Searching for keys in Objects
console.log(keyExists('age', {'name': 'Bill', 'age': 29 })); // true
console.log(keyExists('title', {'name': 'Jason', 'age': 29 })); // false
Es ist ziemlich zuverlässig und funktioniert browserübergreifend gut.
Dies scheint ein wenig verwirrt: Erstens, wenn die Suche ein Array diese Methode ist für eine Wert und nicht ein Schlüssel. Zweitens, warum sollte man ein Array auf diese Weise durchlaufen, wenn man die eingebaute Array.indexOf
Methode? (wenn Sie nach einem Wert suchen, das heißt)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
Alles (fast alles) in JavaScript ist ein Objekt oder kann in ein Objekt umgewandelt werden. Dies ist, wo pseudo-assoziative Arrays sind geboren, wie @PatrickM wies darauf hin.
0 Stimmen
Dieser Benchmark jsben.ch/#/WqlIl gibt Ihnen einen Überblick über die gebräuchlichsten Methoden, um diese Prüfung zu erreichen.
4 Stimmen
Eine schnelle Abhilfe, normalerweise wähle ich
property.key = property.key || 'some default value'
nur für den Fall, dass ich möchte, dass dieser Schlüssel mit einem Wert versehen ist