0

次のオブジェクトを持っていきましょう

   var o = { "foo" : {"bar" : "omg"} };  

fooを使用して キーの値を取得できます

o["foo"] // return {"bar" : "omg"} 

を使用して bar内部のキーの値を取得できますfoo

o["foo"]["bar"]  // return "omg"   

角かっこを1回使用して、bar内部のキーの値を取得できますか? のような何か foo[]

o["foo.bar"] // not working(

また

o["foo/bar"] // not working(
4

5 に答える 5

3

このようなことを行うためにgetter関数を作成することはかなり一般的です。コメントから:

オブジェクトoと文字列'foo.bar'があり、"omg"を取得したいと思います。

var getProp = function (theObject, propString) {
    var current = theObject;
    var split = propString.split('.');

    for (var i = 0; i < split.length; i++) {
        if (current.hasOwnProperty(split[i])) {
            current = current[split[i]];
        }
    }

    return current;
};

http://jsfiddle.net/MXu2M/

注:これはまとめた例です。サイトにドロップする前に、防弾とバフをかけたいと思うでしょう。

于 2012-09-13T13:21:58.550 に答える
0

o["foo"]["bar"]いいえ、別のオブジェクト内のオブジェクトであるため、使用する必要があります。「foo.bar」でアクセスしたい場合は、次のような最初のオブジェクトを作成する必要があることを意味します。

var o = {"foo.bar": "omg"}
于 2012-09-13T12:43:09.133 に答える
0

残念ながら、使用できるのはo["foo"]["bar"]またはo.foo.bar

于 2012-09-13T12:42:17.917 に答える
0

o["foo.bar"]またはo["foo/bar"]あなたの例には無効です。よりクリーンなこの表記を使用できます。

var bar = o.foo.bar // bar will contain 'omg'
于 2012-09-13T12:45:19.273 に答える
0

方法はありますが、これがあなたが求めていたものかどうかはわかりません。

eval("o.foo.bar");

それは危険であり、使用しませんが[]、必要なのは任意のオブジェクトにアクセスするために文字列を使用することである場合、それは機能します

于 2012-09-13T13:13:29.210 に答える