两个三元运算符如何在JS中一起工作?

时间:2020-01-27 19:31:23

标签: javascript conditional-operator

所以我在网上做一个代码问题,其中一个解决方案显示了以下内容

function electionsWinners(votes, k) {
  var max=Math.max(...votes)
  var r=votes.filter(x=>x+k>max||x===max).length
  return k?r:r==1?1:0
}

我认为问题的细节无关紧要,我对return语句的工作方式更感兴趣。我完全不了解返回的内容,似乎正在使用2个三元运算符,但是我不确定,有人可以帮助我了解此return语句的功能吗?

4 个答案:

答案 0 :(得分:0)

你可以看

k?r:r==1?1:0

作为单个表达式。每个?都与其紧随其后的:连接,因此等效于:

k ? r : (r==1 ? 1 : 0)

仅当k为false时,第二个条件运算符才生效。在第二个条件中,如果r1,则返回1,否则返回0

缩进可能更清楚:

return (k
  ? r
  : (r == 1
    ? 1
    : 0
  )
);

答案 1 :(得分:0)

是2个三元运算符 返回k?r:r == 1?1:0

我将使用完整的IF输入代码

{
    "title": "Person",
    "display": "form",
    "type": "form",
    "name": "person",
    "path": "person",
    "components": [{
            "type": "textfield",
            "input": true,
            "inputType": "text",
            "label": "Age",
            "key": "age"
        },
        {
            "type": "textfield",
            "label": "Driver's licence",
            "inputType": "number",
            "input": true,
            "conditional": {
                "show": "true"
            }
        },
        {
            "input": true,
            "label": "Submit",
            "key": "submit",
            "action": "submit",
            "type": "button"
        }
    ]
}

答案 2 :(得分:0)

如果将其转换为if else语句,那么您将更好地了解发生了什么:

if(k) //not is null
  return r;
else
{
  if(r==1)
    return 1;
  else
    return 0;
}

if (k) {
  return r;
} else if (r === 1) {
  return 1;
} else {
  return 0;
}

答案 3 :(得分:0)

第一个测试是k ?,k是否不为0 / undefined / null?如果是这样,则返回r (r)否则返回:如果r为1 (r==1 ?)返回1 (1)否则返回0 (0))