Javascript 如何创建嵌套对象键的变量

Javascript 如何创建嵌套对象键的变量,javascript,Javascript,如果我在尝试在failedIds和passedIds之间交换时编写了以下代码: hideShowTestResults: function(failOrPass){ if(this.[failOrPass ? passedIds : failedIds ].length > 0){} } 然而这种语法在JS中是不被接受的,我该怎么做呢 谢谢, 巴德 括号中的属性访问看起来像obj[prop],而不是obj。[prop] 属性名称是生成字符串的表达式 或者,由于选择属性名称的可

如果我在尝试在
failedIds
passedIds
之间交换时编写了以下代码:

hideShowTestResults: function(failOrPass){
    if(this.[failOrPass ? passedIds : failedIds ].length > 0){} 
}
然而这种语法在JS中是不被接受的,我该怎么做呢

谢谢, 巴德
  • 括号中的属性访问看起来像
    obj[prop]
    ,而不是
    obj。[prop]

  • 属性名称是生成字符串的表达式

  • 或者,由于选择属性名称的可读性不如选择数组:

    if ((failOrPass ? this.passedIds : this.failedIds).length > 0) {
    

    对象访问器需要一个
    字符串
    值,之后可能不应该再次访问
    failedds
    。另外,你应该避免在这个问题和括号之间使用
    (点)。对不起,让我修改一下问题的语法。在类似的问题中参考。不相关,但当有“多级”时像这样的逻辑将其拉入临时变量并使代码更容易推理几乎总是更好的。
    failOrPass
    是一个布尔变量吗?如果是的话,你不应该这样称呼它。不过,这似乎是一个奇怪的函数。作为两个或两个以上的函数可能更好。注意,将其提取为两个语句将更具可读性,并减少认知开销。我刚刚做了:
    let result=failOrPass?this.passedIds:this.faileedids然后:
    如果(result.length>0){}
    但是你的答案投资很好,所以我会在它允许的时候很快投票
    if ((failOrPass ? this.passedIds : this.failedIds).length > 0) {