4027 Stimmen

Prüfen, ob ein Schlüssel in einem JavaScript-Objekt existiert?

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?

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

4voto

sarea Punkte 218
const object1 = {
  a: 'something',
  b: 'something',
  c: 'something'
};

const key = 's';

// Object.keys(object1) will return array of the object keys ['a', 'b', 'c']

Object.keys(object1).indexOf(key) === -1 ? 'the key is not there' : 'yep the key is exist';

4voto

Kamil Kiełczewski Punkte 69048

In der "Array"-Welt können wir die Indizes als eine Art Schlüssel betrachten. Überraschend ist die in Operator (der eine gute Wahl für Objekte ist) funktioniert auch mit Arrays. Der zurückgegebene Wert für einen nicht existierenden Schlüssel ist undefined

let arr = ["a","b","c"]; // we have indexes: 0,1,2
delete arr[1];           // set 'empty' at index 1
arr.pop();               // remove last item

console.log(0 in arr,  arr[0]);
console.log(1 in arr,  arr[1]);
console.log(2 in arr,  arr[2]);

4voto

Miki Punkte 1171

Es ist erwähnenswert, dass Sie seit der Einführung von ES11 den nullischen Koaleszenzoperator verwenden können, was die Dinge sehr vereinfacht:

const obj = {foo: 'one', bar: 'two'};

const result = obj.foo ?? "Not found";

Der obige Code gibt "Nicht gefunden" für alle "falschen" Werte in foo zurück. Andernfalls wird obj.foo zurückgegeben.

Ver Kombiniert mit dem nullischen Koaleszenzoperator

3voto

Anupam Maurya Punkte 1499

yourArray.indexOf(yourArrayKeyName) > -1

fruit = ['apple', 'grapes', 'banana']

fruit.indexOf('apple') > -1

wahr


fruit = ['apple', 'grapes', 'banana']

fruit.indexOf('apple1') > -1

falsch


für eine strenge Überprüfung der Objektschlüssel:

const object1 = {};
object1.stackoverflow = 51; 
console.log(object1.hasOwnProperty('stackoverflow')); 

output: true

0 Stimmen

Das sind Werte, keine Schlüssel.

0 Stimmen

Okay, für Objektprüfung können Sie Object.keys({}).length verwenden, wo es Länge dieses Array-Objekts zurückgibt. zum Beispiel Object.keys({}).length Ausgabe -> 0

0 Stimmen

Use this.. @ken const object1 = {}; object1.stackoverflow = 51; console.log(object1.hasOwnProperty('stackoverflow')); // Ausgabe: true

2voto

Yogesh More Punkte 73

JS Doppeltes Ausrufezeichen !! Zeichen kann in diesem Fall helfen.

const cars = {
        petrol:{
            price: 5000
        },
        gas:{
            price:8000
        }
    }

Angenommen, wir haben das obige Objekt und wenn Sie versuchen, Auto mit Benzinpreis zu protokollieren.

=> console.log(cars.petrol.price);
=> 5000

Sie werden auf jeden Fall 5000 Euro bekommen. Aber was ist, wenn Sie versuchen, ein Elektroauto zu kaufen, das es nicht gibt, dann bekommst du undefine

=> console.log(cars.electric);
=> undefine

Aber mit !! das ist die Kurzform für die Umwandlung einer Variablen in einen booleschen Wert (wahr oder falsch).

=> console.log(!!cars.electric);
=> false

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