2

私はJavaScriptで次のコードを持っています

var result = {
    'org.apache.struts' : '4567ty5y7u8j89hjk789',
    'firstName' : 'Thorpe',
    'surName' : 'Obazee'
}

結果を読み込もうとすると:

// this works
sys.puts(result.firstName) // returns Thorpe
sys.puts(result.surName) // returns Obazee

他のプロパティを読んだときに問題が発生します

sys.puts(result.org.apache.struts) // return an error

エラー:予期された'TypeError:未定義のプロパティ'apache'を読み取ることができません

自分が入れた情報にアクセスできるようにするには、これをどのように読む必要がありますか?

4

4 に答える 4

10

角かっこ表記を使用して、ドット表記に無効な文字が名前に含まれているプロパティにアクセスできます。

result["org.apache.struts"]

ドット表記を使用できるようにオブジェクトにさらにレベルを追加する場合は、レベルごとに別のオブジェクトを宣言する必要があります。例:

var result = {
    org: { apache: { struts: '4567ty5y7u8j89hjk789' } },
    firstName: 'Thorpe',
    surName: 'Obazee'
}

alert(result.org.apache.struts);
于 2010-12-10T10:43:24.290 に答える
4

問題は、別のオブジェクトではなくキー全体として追加していることです。のようにアクセスしますresult['org.apache.struts']

または、結果の作成方法を変更できます。

var result = {
    org : {
        apache : {
            struts : '4567ty5y7u8j89hjk789'
        }
    }
    'org.apache.struts' = '4567ty5y7u8j89hjk789',
    'firstName' = 'Thorpe',
    'surName' = 'Obazee'
}
于 2010-12-10T10:44:16.117 に答える
2

問題は、変数にドットが含まれていることです。javascriptは、これを実際には存在しないネストされたオブジェクトとして解釈することを義務付けていると思います。だから、使用する

result["org.apache.struts"]

値を取得します。

于 2010-12-10T10:45:12.517 に答える
2

オブジェクトのラベルと値の間に「:」を使用し、「org.apache」もオブジェクトとして定義する必要があります。このような:

var result = {
    org: {apache: {struts: '4567ty5y7u8j89hjk789'}},
    firstName: 'Thorpe',
    surName: 'Obazee'
}

本当のレーベルとして私たちになりたいのならorg.apache.struts、AndyEの答えが解決策です。

于 2010-12-10T10:46:51.560 に答える