繁体   English   中英

如何有条件地在javascript对象内部创建成员?

[英]how to conditionally create a member inside an object in javascript?

我正在stackoverflow和谷歌中寻找这样的解决方案,但这是个主意

   a = {
  b: (conditionB? 5 : undefined),
  c: (conditionC? 5 : undefined),
  d: (conditionD? 5 : undefined),
  e: (conditionE? 5 : undefined),
  f: (conditionF? 5 : undefined),
  g: (conditionG? 5 : undefined),
 };

但是我不明白这一点...它在nodejs中不起作用我想创建一个内部有许多对象的对象,但是如果这些对象是客户端发送的形式

也许可以使用数组索引符号完成所需的操作?

a= {};
if(bla) a.b = "go";

尝试这个:

var a = {};
if(conditionB) {
   a['b'] = 5;
}

要么

if(conditionB) {
   a.b = 5;
}

这可以通过两种方式实现。

您可以对每个条件属性使用if语句,如下所示:

    var a = {};
    if(conditionb){
      a.b = 5;
    }

或者,如果您不想为每个属性创建if语句,则可以使用问题中显示的符号来分配属性,然后在循环中删除不必要的属性:

    a = {
      b: (conditionB? 5 : undefined),
      c: (conditionC? 5 : undefined),
      d: (conditionD? 5 : undefined),
      e: (conditionE? 5 : undefined),
      f: (conditionF? 5 : undefined),
      g: (conditionG? 5 : undefined),
    };
    for(var i in a){
      if(a[i] === undefined){
        delete a[i];
      }
    }

你可以试试看

var dog = d;

var myObject = {};
myObject['a']=(1<2)? 1 : 2;
myObject['b']=(1<2)? 1 : 2;
myObject['c']=(1<2)? 1 : 2;
myObject[dog]=(1<2)? 1 : 2;

以防万一您正在动态创建属性。

您可以使用ES2018执行此操作:

a = {
  ...(conditionB? { b : 5} : {}),
  ...(conditionC? { c : 5} : {}),
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM