1872 Stimmen

Wie prüfe ich, ob ein Objekt eine bestimmte Eigenschaft in JavaScript hat?

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?

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 y hasOwnProperty herausgekommen Weg für mich langsamer als die anderen (98 % langsamer). Ich bin nicht überrascht über hasOwnProperty langsamer zu sein, aber ich bin überrascht über in .

2voto

majurageerthan Punkte 1870

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

1voto

John Anisere Punkte 463

Sie müssen die Methode object.hasOwnProperty(property) . Sie gibt true zurück, wenn das Objekt die Eigenschaft hat, und false, wenn das Objekt sie nicht hat.

1voto

MD SHAYON Punkte 6992

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

Mehr erfahren

0voto

Alex Punkte 282

Machen Sie die Dinge nicht zu kompliziert, wenn Sie es können:

var isProperty =  (objectname.keyname || "") ? true : false;

Es ist einfach und klar für die meisten Fälle...

0 Stimmen

Die einfachste Variante ist var isProperty = !!objectname.keyname;

1 Stimmen

Wenn das Objekt folgendermaßen aussieht const objectName = { keyname: false }; sollte er true zurückgeben, da keyname ist eine Eigenschaft von objectname . Da der Wert aber falsch ist, würde er mit dieser Logik falsch zurückgeben.

0voto

Nitin Jadhav Punkte 5051

Ein besserer Ansatz für die Iteration über die eigenen Objekteigenschaften:

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.com

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.

Powered by:

X