213 Stimmen

Ersetzen eines Wertes, wenn dieser null oder undefiniert ist, in JavaScript

Ich habe eine Anforderung zur Anwendung der ?? C#-Operator zu JavaScript und ich weiß nicht, wie. Betrachten Sie dies in C#:

int i?=null;
int j=i ?? 10;//j is now 10

Jetzt habe ich das in JavaScript eingerichtet:

var options={
       filters:{
          firstName:'abc'
       } 
    };
var filter=options.filters[0]||'';//should get 'abc' here, it doesn't happen
var filter2=options.filters[1]||'';//should get empty string here, because there is only one filter

Wie mache ich es richtig?

Danke.

EDIT: Ich habe die Hälfte des Problems entdeckt: Ich kann die 'indexer'-Notation nicht für Objekte verwenden ( my_object[0] ). Gibt es eine Möglichkeit, dies zu umgehen? (Ich kenne die Namen der Filtereigenschaften nicht im Voraus und möchte sie nicht durchgehen).

2voto

Gibolt Punkte 32347

Destrukturierungslösung

Der Inhalt der Fragen kann sich geändert haben, daher werde ich versuchen, sie gründlich zu beantworten.

Mit Hilfe der Destrukturierung können Sie Werte aus allen Eigenschaften herausziehen. Sie können auch Standardwerte definieren, wenn sie null/undefiniert sind, und Aliase benennen.

const options = {
    filters : {
        firstName : "abc"
    } 
}

const {filters: {firstName = "John", lastName = "Smith"}} = options

// firstName = "abc"
// lastName = "Smith"

HINWEIS: Großschreibung ist wichtig

Wenn Sie mit einem Array arbeiten, gehen Sie folgendermaßen vor.

In diesem Fall wird Name aus jedem Objekt im Array extrahiert und mit einem eigenen Alias versehen. Da das Objekt möglicherweise nicht existiert = {} wurde ebenfalls hinzugefügt.

const options = {
    filters: [{
        name: "abc",
        value: "lots"
    }]
}

const {filters:[{name : filter1 = "John"} = {}, {name : filter2 = "Smith"} = {}]} = options

// filter1 = "abc"
// filter2 = "Smith"

Ausführlicheres Tutorial

Browser-Unterstützung 92% Juli 2020

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