d = {'hello':'abc'}
d.get('hello','default_val');
上記はPythonです。どのようにjavascriptでこれを行うには?キーが見つからなければデフォルト値を設定できるようにしたい。javascriptで.getと同等のものは何ですか?
d = {'hello':'abc'}
d.get('hello','default_val');
上記はPythonです。どのようにjavascriptでこれを行うには?キーが見つからなければデフォルト値を設定できるようにしたい。javascriptで.getと同等のものは何ですか?
あなたは(少なくとも)4つのオプションている:多くの場合
、あなたがthe curiously-powerful ||
operator使用することができます。
x = obj.key || "default";
手段は:falsyあるobj.key
obj.key
ない限りにx
を設定し、その場合は代わりに"default"
を使用してください。偽の値は、undefined
,null
,0
,NaN
,""
、もちろんfalse
です。したがって、obj.key
が有効に0
またはそのいずれかの値である場合は、使用したくないでしょう。
x = "key" in obj ? obj.key : "default";
in
は、オブジェクトが、指定されたキーを持つプロパティを持っているかどうかを教えてくれる:||
が適用されていません状況で
は、in
オペレータがあります。キーが文字列であることに注意してください(プロパティ名は文字列またはシンボルです;シンボルを使用していれば知っているでしょう)。したがって、obj.key
が有効に0
の場合は、上記の#1ではなく、これを使用したいと考えています。それは、オブジェクトにまたはオブジェクトのプロトタイプチェーンだ場合
in
がキーを見つけます(例えば、場所のすべては、あなたがそれはあなたがプロパティを取得する場合から取得したいです)。あなただけのオブジェクト自体ではなく、そのプロトタイプチェーンをチェックしたい場合は、hasOwnProperty
を使用することができます。
x = obj.hasOwnProperty("key") ? obj.key : "default";
具体的にundefined
をチェック:
obj
がない場合は、デフォルトを使用します x = typeof obj.key !== "undefined" ? obj.key : "default";
プロパティがある場合はまたはですが、プロパティの値はundefined
です。
Javascriptのlogical OR operatorはshort-circuitingです。あなたが行うことができます。
d["hello"] || "default_val";
何について:
var d = {'hello':'abc'};
var helloVar = d.hello ? d.hello : 'default_val';
FWIWは、 'helloVar = d.hello ||とまったく同じように動作します。 'default_val'; ' –
ねえ、' ... || ...ははるかに短くて読みやすい。それが他の言語ではうまくいかないことは間違いありません。それは間違いなく私の一日を作りました:p! – elslooo
うわーを、このことを知っていたことはありません。これは他の言語(特にPHP)でも動作しますか?それは本当に素晴らしいです。 – elslooo
@ティム:私はそれに答えるのに十分なPHPを知らない。ほとんどの言語(C、C++、C#、Java)では、 '||'は単に 'true'または' false'を返します。 JavaScriptのバージョンは、プログラミングの "機能的な"スタイルでもっと面白くて、より多くです。 (BTW、 '&&'は似たようなことをします:左のものが真実ならば、それはあなたの右のものを与え、そうでなければ 'false'を返します) –
@TJCrowder、私はそれをテストしました。 PHPで動作しません:(...ありがとうとにかく=)! – elslooo