Wie prüfe ich, ob ein Objekt eine bestimmte Eigenschaft in JavaScript hat?
Bedenken Sie:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Ist das der beste Weg?
Wie prüfe ich, ob ein Objekt eine bestimmte Eigenschaft in JavaScript hat?
Bedenken Sie:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Ist das der beste Weg?
Zeigen, wie man diese Antwort
const object= {key1: 'data', key2: 'data2'};
Object.keys(object).includes('key1') //returns true
Wir können verwenden indexOf
auch ich bevorzuge enthält
El hasOwnProperty() Methode gibt einen booleschen Wert zurück, der angibt, ob das Objekt die angegebene Eigenschaft als eigene Eigenschaft besitzt (und nicht geerbt hat).
const object1 = {};
object1.property1 = 42;
console.log(object1.hasOwnProperty('property1'));
// expected output: true
console.log(object1.hasOwnProperty('toString'));
// expected output: false
console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false
Wenn Sie die Eigenschaften eines Objekts iterieren wollen, ohne hasOwnProperty()
prüfen, verwenden. for(let key of Object.keys(stud)){}
Methode:
for(let key of Object.keys(stud)){
console.log(key); // will only log object's Own properties
}
Vollständiges Beispiel und Vergleich mit for-in with hasOwnProperty()
function Student() {
this.name = "nitin";
}
Student.prototype = {
grade: 'A'
}
let stud = new Student();
// for-in approach
for(let key in stud){
if(stud.hasOwnProperty(key)){
console.log(key); // only outputs "name"
}
}
//Object.keys() approach
for(let key of Object.keys(stud)){
console.log(key);
}
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.
32 Stimmen
Ich habe einen jsperf-Test mit den Antworten aller geschrieben, um zu sehen, wer am schnellsten ist: jsperf.com/wörterbuch-enthaelt-schluessel
0 Stimmen
('propertyName' in Object) ? 'Eigenschaft ist vorhanden' : 'Eigenschaft ist nicht vorhanden'
2 Stimmen
@styfle danke für den jsperf-Test.
in
yhasOwnProperty
herausgekommen Weg für mich langsamer als die anderen (98 % langsamer). Ich bin nicht überrascht überhasOwnProperty
langsamer zu sein, aber ich bin überrascht überin
.4 Stimmen
Es gibt einen neuen Vorschlag für Stufe 3,
Object.hasOwn
die einige der Probleme derObject.prototype.hasOwnProperty
.