如何在 JS 对象文字中放置三元条件

How can I put a ternary conditional in a JS object literal

如何在 JS 对象字面量中放入三元条件?

var options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

var overlayEXVOORh = {
  (options[0] == 1) ? "01" : EXVOORh01, : {};
  (options[5] == 6) ? "06" : EXVOORh06, : {};
  (options[7] == 8) ? "08" : EXVOORh08, : {};
  (options[3] == 4) ? "04" : EXVOORh04, : {};
};

console.log(overlayEXVOORh);

下面是正在运行的 JS 对象,但我的目标是让它“更聪明”

var overlayEXVOORh = {
"06": EXVOORh06,
"07": EXVOORh07,
"08": EXVOORh08,
"01": EXVOORh01,
"02": EXVOORh02,
"03": EXVOORh03,
};

对象必须是 key/value 对,因为我使用的是传单库。

你几乎答对了,只是顺序打乱了

var options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

var overlayEXVOORh = {
  "01": (options[0] == 1) ? 'EXVOORh01' : {},
  "03": (options[7] == 9) ? 'EXVOORh03' : {},
  "06": (options[5] == 6) ? 'EXVOORh06' : {},
  "08": (options[7] == 8) ? 'EXVOORh08' :
    {},
  "04": (options[3] == 4) ? 'EXVOORh04' :
    {},
};

console.log(overlayEXVOORh);

编辑: 添加失败条件 "03"

使用 ES6,您可以像这样使用展开操作数来创建可选键:

var options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

var overlayEXVOORh = {
  ...(options[0] == 1 ? { "01" : EXVOORh01 } : {});
  ...(options[5] == 6 ? { "06" : EXVOORh06 } : {});
  ...(options[7] == 8 ? { "08" : EXVOORh08 } : {});
  ...(options[3] == 4 ? { "04" : EXVOORh04 } : {});
};

简短的解释是解析为 { "01" : EXVOORh01 }{},然后将其传播到对象中。

你可以这样做:

var options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

var overlayEXVOORh = {
  "01" : (options[0] == 1) ?  "EXVOORh01" : {},
  "06" : (options[5] == 6) ?  "EXVOORh06" : {},
  "08" : (options[7] == 8) ?  "EXVOORh08" : {},
  "04" : (options[3] == 4) ?  "EXVOORh04" : {}
};

console.log(overlayEXVOORh);

var options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];

var overlayEXVOORh = {};

options.forEach(
    (element, index) => {
        if (options[element - 1] === index + 1) {
               overlayEXVOORh[options[element - 1]] = {};
        } else {
               overlayEXVOORh["EXVOORh" + element] = {};
        }
    });
  
console.log( overlayEXVOORh );

我不确定你想要什么,但它可能对你有帮助。

在javascript中,object可以作为object[key]来访问,在这种情况下,key只是一个字符串。

所以如果字符串有一些规则,比如“prefixStringPostfix”,你可以使用循环。

喜欢下面的代码

for(const value of array){
 if(condition) object[value] = something
}