0

私はJavaScriptで作業していて、オブジェクトを理解することに固執しています。これが私のシナリオです。

私は、その中に複数のオブジェクトを持つオブジェクトを持っています。

data {
"aa" : object
"bb" : object
"cc" : object
}

//expanding aa bb and cc

aa {
name : "a"
type : "static"
value : "123"
}

bb {
name : "b"
type : "dyn"
value : "343"
}

cc {
name : "c"
type : "dyn"
value : "545"
}

今私が達成したいのは、 type = "dyn" を持つオブジェクトを持つべきオブジェクトがあるので、このような reqdata オブジェクトが欲しいということです

reqdata {
"bb" : object
"cc" : object
}

これを行うコードを作成しましたが、reqdata にすべてのデータがあるため、機能しません。

   var reqData = $.each (data, function(key, d){
        if (type === "dyn")
            return d;                             
        });

オブジェクトをループする適切で効率的な方法を教えてください。

ヘルプとガイダンスに感謝します

4

3 に答える 3

1

新しいオブジェクトを作成し、プロパティをテストして、必要な場合typeは現在のサブオブジェクトを新しいサブオブジェクトに割り当てる必要がありtypeます。

          // v--- Holds the results
var newObj = {};
                       //   v--- The current sub-object
$.each(data, function(key, obj){
    if (obj.type === "dyn") // <-- Test its `type` property
        newObj[key] = obj;  // <--   and assign to `newObj` if it matches
});

objに割り当てるときは、 のコピーを作成していないことに注意してくださいnewObj。への参照のコピーを作成していますobj

これは、datanewObjが同じオブジェクトを共有することを意味します。経由で行われた変更は からdata監視できnewObj、その逆も同様です。

于 2012-11-22T20:39:51.720 に答える