Ich muss den ??
C # -Operator auf JavaScript anwenden und weiß nicht wie. Betrachten Sie dies in C #:
int i?=null;
int j=i ?? 10;//j is now 10
Jetzt habe ich dies 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 das richtig?
Vielen Dank.
BEARBEITEN: 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 vorher nicht und möchte sie nicht durchlaufen).
javascript
Valentin Vasilyev
quelle
quelle
0
,false
, leere Zeichenkette), würde ich so etwas wie dies stattdessen tun:var j = (i === null) ? 10 : i;
die nur ersetzen werdennull
, anstatt alles , was zu falsch ausgewertet werden kann.i
definiert ist, wird ein Fehler ausgegeben. scheint mir so nutzlos .. (?)var j = (i != null ? i : 10);
sollte funktionieren, daundefined
ist==
null, soi != null
istfalse
für beidenull
undundefined
.Nein; Ein Objektliteral ist, wie der Name schon sagt, ein Objekt und kein Array. Sie können also eine Eigenschaft nicht einfach anhand eines Index abrufen, da es keine bestimmte Reihenfolge ihrer Eigenschaften gibt. Die einzige Möglichkeit, ihre Werte abzurufen, besteht in der Verwendung des spezifischen Namens:
Oder indem Sie sie mit der
for ... in
Schleife durchlaufen :quelle
for in
JS-Schleife nur mit Objektliteralen funktioniert! Es schlägt kläglich auf JS-Arrays (gibt Index) und JS Maps (gibtundefined
) fehl . Ich hoffe, Sie vergessen das nicht, damit Sie nicht auf eine Debugging-Überraschung warten! xPES2020 Antwort
Der neue Nullish Coalescing Operator ist endlich für JavaScript verfügbar, obwohl die Browserunterstützung begrenzt ist. Nach Angaben von caniuse werden nur 48,34% der Browser unterstützt (Stand April 2020).
Laut Dokumentation,
Dadurch wird sichergestellt, dass beide Variablen einen Fallback-Wert von
''
iffilters[0]
oderfilters[1]
arenull
oder habenundefined
.Beachten Sie, dass der nullish coalescing-Operator den Standardwert für andere Arten von Falschwerten wie
0
und nicht zurückgibt''
. Wenn Sie alle falschen Werte berücksichtigen möchten, sollten Sie den Operator OR verwenden||
.quelle
Logische Nullzuweisung, 2020+ Lösung
Derzeit wird den Browsern ein neuer Operator hinzugefügt
??=
. Dies entsprichtvalue = value ?? defaultValue
.||=
und&&=
kommen auch, Links unten.Dies prüft, ob die linke Seite undefiniert oder null ist, und schließt kurz, falls bereits definiert. Wenn nicht, wird der linken Seite der Wert für die rechte Seite zugewiesen.
Grundlegende Beispiele
Objekt- / Array-Beispiele
Funktionsbeispiel
?? = Browser-Unterstützung Juli 2020 - .03%
?? = Mozilla-Dokumentation
|| = Mozilla-Dokumentation
&& = Mozilla-Dokumentation
quelle
Destrukturierungslösung
Der Inhalt der Fragen hat sich möglicherweise geändert, daher werde ich versuchen, ihn gründlich zu beantworten.
Durch die Destrukturierung können Sie Werte mit Eigenschaften aus allem herausziehen. Sie können auch Standardwerte definieren, wenn null / undefiniert und Aliase benannt sind.
Wenn Sie mit einem Array arbeiten, gehen Sie wie folgt vor.
In diesem Fall wird der Name aus jedem Objekt im Array extrahiert und mit einem eigenen Alias versehen. Da das Objekt möglicherweise nicht vorhanden ist,
= {}
wurde es ebenfalls hinzugefügt.Detaillierteres Tutorial
Browser-Unterstützung 92% Juli 2020
quelle