Javascript 显示具有最高秩的变量

Javascript 显示具有最高秩的变量,javascript,Javascript,如何使var输出显示var一、二、三或四,具体取决于排名顺序(最高“一”最低“四”),而不包括未定义的。例如 var one = //undefined var two = "yes121"; var three = "no"; var four = "yes"; var output = // should be "yes121" as `var two` has the higest rank that is not undefined. 我的输出为var输出=1+2+3+4;但由于明显的

如何使
var输出
显示
var一、二、三或四,具体取决于排名顺序(最高“一”最低“四”),而不包括未定义的。例如

var one = //undefined
var two = "yes121";
var three = "no";
var four = "yes";
var output = // should be "yes121" as `var two` has the higest rank that is not undefined.
我的输出为var输出=1+2+3+4;但由于明显的原因,我的要求是不必要的

澄清
如果我有四个变量“一”、“二”、“三”和“四”,如何将输出变量设置为排名最高的变量,即“一”(最低的是“四”),不包括排名较低的变量和未定义的排名较高的变量。

使用
|
操作符。它将返回最左边的非伪值,例如表达式

var output = one || two || three || four;
将返回
“yes121”
。但non-falsy意味着空字符串也将是false;要检查
未定义的
,您确实需要遍历一个值数组:

var vals = [undefined, "yes121", "no", "yes"];
var output = vals.reduce(function(a, b) {
    return (typeof a == "undefined") ? b : a;
});

我是否理解正确:您希望返回名称最接近零的变量,忽略值未定义的变量

唯一的方法是逐个测试它们是否未定义:

var one = //undefined
var two = "yes121";
var three = "no";
var four = "yes";
var output;

if (one !=== undefined) output = one;
else if (two !=== undefined) output = two;
else if (three !=== undefined) output = three;
else if (four !=== undefined) output = four;
您也可以这样做:

var output = one || two || three || four; 
不过,这可能会导致错误表达式出现问题。(如“”、0、-1、NaN等)


然而:我认为你应该做什么呢?创建一个数组,这样你就可以在其中循环:

Ummm。。。你没有。使用集合。使用变量名来定义程序逻辑非常糟糕,会导致无法维护的代码混乱iv'e尝试使用if,但它确实很长,很混乱,不起作用,这强烈表明您可能以错误的方式进行此操作/试图解决错误的问题。是什么决定了两个变量之间的“最高等级”?为什么“是121”比“是”或“否”更高?如果不了解计算秩的算法,我们无法帮助您解决此问题。OP希望返回变量名,而不是值。@EdS:否。您怎么知道变量名?我同意,Bergi,但EdS似乎是正确的。我不确定OP知道他们在做什么。@Bergi:没错。问题本身就是要求解决一个不存在/没有意义的问题。我们有一个初学者要求解决他们认为是手头的问题。事实上,无论这是什么问题,都有更好的解决方法。我经常看到初学者这样做;将程序逻辑映射到变量名称。通常他们只是还不知道如何使用集合类型。@gdoron:为什么?在OPs配置中,使用
var one,two=“yes121”,three=“no”,three=“yes”它将返回
two
的值。