2016-10-18 6 views
-1

サービスから変数を取得すると、true、false、またはundefinedになります。それが真実か偽であれば私はそれを保つ必要があります。それ以外の場合は真実にしなければなりません。else変数なしの条件付き代入

私はそれを作る方法を考え出すていたと私は使用:

obj.foo != false && (obj.foo = true); 

それを作るための最善の方法はありますか?つまり、私は三項演算子を使うことができますが、変数が既にfalse/trueである場合、三項演算子のelse文は必要ありません。

+1

あなたのif文でそれを代入しています。スニペット全体を投稿してください。 – Tom

+1

'obj.foo = obj.foo!== undefined? obj.foo:true' – Rajesh

+1

これはどうでしょうか? 'foo === undefined || foo === true' –

答えて

2

私はこれが仕事だと思う:foo === undefined || foo

var foo = undefined; 
 
console.log(foo === undefined || foo); 
 

 
var foo = true; 
 
console.log(foo === undefined || foo); 
 

 
var foo = false; 
 
console.log(foo === undefined || foo);

+0

あなたは 'foo === undefined ||を試すことさえできます。 foo' – Rajesh

+0

本当に、更新された、ありがとう。 –

0

このような何かが働くだろう:

function invokeMe() { 
    var objectsArray = [{name: "object1", trueOrNot: true}, 
       {name: "object2", trueOrNot: false}, 
       {name: "object3", trueOrNot: ''} 
       ]; 
    objectsArray.forEach(function (object) { 
    object.trueOrNot = object.trueOrNot !== false ? true : false; 
    console.log(object); 
}); 
} 

invokeMe(); 

Jsfiddle

+0

そのコードは常に値をtrueに設定していますか? – AJPerez

+0

いいえ - obj.foo = undefinedの場合(またはその実際の値が最初から真であった場合)のみ、値をtrueに設定します。 私は投稿を理解しているので、値が偽であれば、その値は真ではいけません。したがって、obj.foo = falseの場合、このコードはobj.fooを実際の値に設定します。つまり、falseを意味します。 :) – Daniel

+0

まとめ: Obj.foo = trueの場合、obj.fooはtrueのままです。 obj.foo = falseの場合、obj.fooはfalseのままです。 obj.foo = undefinedの場合、obj.fooはtrueに設定されます。 – Daniel