2012-03-17 10 views
2

私は3つの変数を持っていますが、必ずしもそうではありません。 o1,o2,o3好ましい変数値を選択する最も簡単な方法

をどれも設定されていない場合:私は、次のように新しい変数を作成したい

o4 = null

o1場合は、設定o4 = o1、他が何であるかを考えています。

o1が設定されていないとo2が設定されている:o4 = o2

のでo4 = o3 1と2が設定されていない場合にのみ設定されます。私は今、長いスイッチを使用していますが、私はそれがよりよく行うことができます賭ける

==

のJavaScript/jQueryの

var tmpl = ''; 

    if(data.o3 != null) 
     tmpl = data.o3; 

    if(data.o2 != null) 
     tmpl = data.o2; 

    if(data.o1 != null) 
     tmpl = data.o1; 

答えて

2

var o4 = o1 || o2 || o3を試してみてください。

編集:コメントごとに、これは設定されている可能性のある値が偽でない場合にのみ機能します。あなたが確かでない限り、この方法を避けるのが最善であるかもしれません。

+2

これはo1'、 'o2'または' o3'は ' ""、偽、0、NaNで、null'なのでなどのような正当なfalsey値可能if'動作しません... – jfriend00

+1

これは、変数が '0'のような偽の値にならないと仮定して動作します。また、 'o3'が全く設定されていない場合、' o4'は 'null'ではなく' undefined'として終了します。 – Henry

+0

も私の最初の考えでしたが、例えば0のためにはうまくいかず、OPは条件が '' sety''ではなく '' truthy'であると言いました。編集:うわー私は遅いです:) – Andy

2

最も簡単な方法(と変数の任意の数をサポートしている方式)の配列にあなたのo1, o2, o3変数を置くために、次のようになります。

getFirstDefined(array) { 
    for var (i = 0; i < array.length; i++) { 
     if (typeof array[i] != "undefined") { 
      return(array[i]); 
     } 
    } 
    return(null); 
} 
+0

これはこれまでのところ正しい解決策にしか思われません – Andy

+0

+1良い解決策がここにあります。私の場合、変数は設定されているかどうかにかかわらず、Adamの解法はうまくいくでしょう。 –

3

これはそれを行う必要があります。

o4 = o1 || o2 || o3 || null; 

それをそれが偽であるかどうかを見るために各変数をチェックします。値が真実であれば、その値は使用されます。真実がない場合、o4はnullに設定されます。あなたが偽の値o4が何を持っているか気にしないならば、最後のヌルはオプションです。

編集:「設定」を「真実」に切り替えました。

+0

+1良い答え、この作品は私のためになります。 –

1

demo

function set(o1, o2, o3) { 
    var o4 = o1 || o2 || o3 || null; 
    console.log(o4); //check o4 
} 

set()     //o4 = null 
set('foo1');   //o4 = foo1 
set(null,'foo2');  //o4 = foo2 
set(null,null,'foo3'); //o4 = foo3 
関連する問題