1

次のオブジェクトがあるとします。

var obj = {
    property: [{key:"value1"},{key:"value2"}]
}

そして、私は次の文字列を持っていますproperty[0].key

value2コード内でこの文字列を使用して取得するにはどうすればよいですか?

基本的に私はこのようなものを作りたいですobj["property[1].key"]

文字列にドットしかない場合、次のコードを使用できます。

function get_property_by_string(object, string){
    return string.split(".").reduce(function(obj, key) {
        return obj[key];
    }, object);
}

しかし、配列では、このコードは機能しません。助言がありますか?

4

3 に答える 3

2

文字列の内容を受け取り、それをコマンドとして評価する Eval() 関数を使用できます。

http://www.w3schools.com/jsref/jsref_eval.asp

于 2013-07-29T08:09:26.223 に答える
0

プロパティが文字列として保存されているという事実は問題ではありません。オブジェクトのプロパティにアクセスします。

var obj = { 'key_a' : [{key:'value', otherkey: 'other value' }] },
    property = "key_a";

 obj[property][0].otherkey; // outputs "other value"

可能であれば eval() は避けてください。プログラムにオーバーヘッドが追加されるだけであり、その使用は悪い習慣と見なされています。

于 2013-07-29T08:17:08.623 に答える
0

「プロパティ」を配列として作成しているので、直接アクセスできるはずです。次のコードを Chrome でローカルにテストしたところ、問題なく動作するようです。

var obj = {
    property: [{key:"value1"},{key:"value2"}]
}

function test()
{
    alert(obj.property[0].key); // shows value1
    alert(obj.property[1].key); // shows value2
}
于 2013-07-29T08:18:37.440 に答える