2

次のような JSON オブジェクトがあります。

 var data = {
 Name : "test name",
 Type : "test type",
 VendorInfo :{
               FirstName : "Vendor First Name",
               LastName : "Vendor Last Name",
               Address : "Vendor Address",
               City : "Vendor City",
               ZipCode : "Zip"
             }
 }

今は別に、データ変数のフィールドにアクセスする方法に関する情報を保持したい

var accessInfo=[
    { fieldName : "Name", actionName : "Edit" },
    { fieldName : "Type", actionName : "Edit" },
    :
    :etc..
 ]

今、私の JavaScript では、for ループで accessInfo 配列を反復処理できます。

for(var i=0;i<accessInfo.length;i++){
data[accessInfo[i].fieldName] = "changed field";
}

トップレベルのフィールドでは問題なく動作しますが、階層の下位のフィールドにアクセスする方法がわかりません.. data.VendorInfo.FirstName、data.VendorInfo.LastNameなど.

これはまったく可能ですか?「VendorInfo.FirstName」と[VendorInfo][FirstName]を入れてみましたが、うまくいきません..

4

1 に答える 1

0

ターゲット オブジェクトをトラバースするには、アクセス仕様を解析するだけです。次のような関数を使用できます。

function getProp(obj, propName) {
   var prop;
   var props = propName.split('.');
   for (var i = 0; i < props.length; i++) {
      prop = obj[props[i]];
      if (typeof prop === 'null' || typeof prop === 'undefined') return prop;
   }
  return prop;
}
于 2012-09-03T15:47:50.920 に答える