Gibt es eine Syntax zum Festlegen von Eigenschaften basierend auf einer Bedingung?Bedingt eine Objekteigenschaft festlegen
data: {
userId: 7,
actionId: 36,
express: (myCondition ? true : null) // does not work
}
Ich möchte express
entweder auf einen Wert oder gar nicht gesetzt gesetzt werden (das heißt, sollte es keinen Schlüssel express
genannt) und ohne zusätzliche Aussagen nach der Definition. Ich weiß, dass ich es als Boolean verwenden kann, aber die empfangende Seite verwendet einen isset()
Scheck und ich frage mich, ob ich es vermeiden kann, es zu ändern.
bearbeiten: wie gesagt scheint es für das Problem keine direkte Lösung. Hier sind die Nähe Vorschläge:
JSON.stringify (Chris Kessel, dystroy):
var json = JSON.stringify({
data: {
userId: 7,
actionId: 36,
express: (myCondition ? true : null)
}
});
Eine anonyme Funktion (Paulpro):
var data = new function(){
this.userId = 7;
this.actionId = 36;
myCondition && (this.express = true);
};
Eine zusätzliche Erklärung (x4rf41):
data: {
userId: 7,
actionId: 36
}
if(myCondition) data["express"] = true;
Eval (ein ehemaliger Kollege von mir):
eval("data = {userId: 7, actionId: 36 " + (myCondition ? ", express: true}" : "}"))
bedingte Definition (weiß nicht wirklich, wie diese beschriften):
data = (
(myCondition && { userId: 7, actionId: 36, express: true }) ||
(!myCondition && { userId: 7, actionId: 36 })
);
wenn Sie sagen, „nicht gesetzt“, meinen Sie die Eigenschaft vorhanden ist, aber den Wert 'undefined' hat, oder die Eigenschaft existiert nicht ? – jbabey
Ich meine, das Eigentum sollte überhaupt nicht existieren. – mcmlxxxvi
@mcmlxxxvi Ich denke, Sie meinten Objekteigenschaften, nicht JSON-Eigenschaften. Ihre Frage enthält kein JSON. – Paulpro