所以我在网上做一个代码问题,其中一个解决方案显示了以下内容
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语句的功能吗?
答案 0 :(得分:0)
你可以看
k?r:r==1?1:0
作为单个表达式。每个?
都与其紧随其后的:
连接,因此等效于:
k ? r : (r==1 ? 1 : 0)
仅当k
为false时,第二个条件运算符才生效。在第二个条件中,如果r
为1
,则返回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))