【发布时间】:2013-08-02 14:46:39
【问题描述】:
是否有一些基于条件设置属性的语法?
data: {
userId: 7,
actionId: 36,
express: (myCondition ? true : null) // does not work
}
我希望将express 设置为一个值或根本不设置(即,不应该有名为express 的键),并且在定义之后没有额外的语句。我知道我可以将它用作布尔值,但接收方正在使用isset() 检查,我想知道是否可以避免修改它。
编辑:似乎没有直接解决问题的方法。以下是最接近的建议:
JSON.stringify(Chris Kessel,dystroy):
var json = JSON.stringify( {
data: {
userId: 7,
actionId: 36,
express: (myCondition ? true : null)
}
});
匿名函数(Paulpro):
var data = new function(){
this.userId = 7;
this.actionId = 36;
myCondition && (this.express = true);
};
额外声明 (x4rf41):
data: {
userId: 7,
actionId: 36
}
if(myCondition) data["express"] = true;
Eval(我以前的同事):
eval("data = {userId: 7, actionId: 36 " + (myCondition ? ", express: true}" : "}"))
条件定义(不知道怎么标注这个):
data = (
(myCondition && { userId: 7, actionId: 36, express: true }) ||
(!myCondition && { userId: 7, actionId: 36 })
);
【问题讨论】:
-
当您说“根本没有设置”时,您的意思是该属性存在但值为
undefined,还是该属性不存在? -
我的意思是该属性根本不应该存在。
-
@mcmlxxxvi 我认为您的意思是对象属性,而不是 JSON 属性。您的问题中没有 JSON。
-
@Paulpro:我认为你是对的 :)
标签: javascript