-4

我怎样才能var output显示var one OR two OR three Or four 取决于排名顺序(最高“一”最低“四”),不包括未定义。例如

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 output = 一 + 二 + 三 + 四;但出于显而易见的原因,这对于我所要求的而言是不必要的。

阐明

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

4

2 回答 2

0

使用||运算符。它将返回最左边的非假值,例如表达式

var output = one || two || three || four;

将返回"yes121"。但是 non-falsy 意味着空字符串也将是 false;要检查undefined你真的必须遍历一个值数组:

var vals = [undefined, "yes121", "no", "yes"];
var output = vals.reduce(function(a, b) {
    return (typeof a == "undefined") ? b : a;
});
于 2012-04-16T20:41:14.913 回答
0

我对您的理解是否正确:您想返回 NAME 最接近零的变量,而忽略未定义 VALUE 的变量?

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

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 等)

但是:我认为你应该怎么做它创建一个数组,所以你可以遍历它:

于 2012-04-16T20:45:30.427 回答