質問

これは明確に私のために少し難しいですが、PHPであなたのような何かを言うことができます:

$myArray['someindex'] = "my string";

と、それは値を割り当て/作成され、インデックスがある場合、それは既存の値を上書きする、という命名ます。

インデックスがない場合

今日、私はそうのようなチェックをしなければならなかったJavaScriptにこれを比較します:

if (!myObject[key]) myObject[key] = "value";

方法:

より冗長(PITA読み取り)とは対照的に、自分でこれらのチェックを行うために、私は、これは好き嫌い時点のビットかもしれ知っているが、PHPの能力の名前(および他の多くの言語)がありますJavascriptを?

編集

私はこれを求めてで自分自身を混乱しました。あなたがこのような構造に追加したいとしましょう。

myobject = {
    holidays : {easter : {date : 4/20/2010,
                          religion : Christianity}
                holi : {date : 3/10/2010,
                        religion : hindu} 
}
私は表形式のデータを受け取った今日の問題を持っていた私は、オブジェクトを構築することにより、このような一種のツリーに入れたいと思っています。

私は、ループを始めたとき、ツリーは、ほとんどがその時点までに構築されていなかった場合、私はmyobject['holidays'][thisVariable][date] = 4/20/2010などのトラブル意思NEW指数を持っています。

これが明確でない場合は、

私は貧しい人々の思考のために申し訳ありませんが、私の他のコンピュータからのサンプルコードをつかむでしょう。

役に立ちましたか?

解決

私は '自動vivification' を推測 http://en.wikipedia.org/wiki/Autovivification Perlのからには、関連するかもしれないが、それはあなたが説明と異なる動作します。 wikiページには良い要約を持っています。 Rubyのような他の言語も同様に自動vivificationのために使用することができます割り当てられていないハッシュキーは、「デフォルトのアクション」のフックをサポートしています。

例えば、Rubyでます:


>> h = Hash.new {|h,k| h[k] = {}}
=> {}
>> h["hello"]["world"] = 20
=> 20
>> h["hello"]["world"]
=> 20

他のヒント

あなたは間違っています。 JavaScriptでオブジェクトのキーに値を代入するには、そのチェックを実行する必要はありません。値は、そのキーかどうかの値がすでに存在するかどうかを割り当てられます。

それについて考えてみよう。あなたが最初にそこに価値を持っていた場合はどのようにこれまでのオブジェクトやハッシュに値を得ることができる?

myObjectという[キー] =「値」が存在する場合、既存の値が上書きされます:

はJavascriptがここにPHPとまったく同じことを行います。あなたがそう考える理由を教えてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top