2016-10-30 7 views
0

他underscrore.jsか何かに変換:JavaScriptオブジェクトIは、以下のようにオブジェクトを持って

var obj1 = { 

    "Prop1": { 
     "Prop2": { 
      "Prop2.1": "value1", 
      "Prop2.2": "value2" 
     }, 
     "Prop3": { 
      "Prop3.1": "value3", 
      "Prop3.2": "value4" 
     }, 
     "Prop4": { 
      "Prop4.1": "value5", 
      "Prop4.2": "value6", 
      "Prop4.3": "value7" 
     } 
    } 
}; 

が、私は以下のオブジェクトに、このオブジェクトを変換したい:あなたが見ることができるように

var obj1 = { 

    "data": [ 
    { 
      "id": "Prop1", 
      "data": [ 
       { 
        "id": "Prop2", 
        "data": [ 
         {"id": "Prop2.1","value": "value1"}, 
         {"id": "Prop2.2","value": "value2"} 
        ] 
       }, 
       { 
        "id": "Prop3", 
        "data": [ 
         {"id": "Prop3.1","value": "value3"}, 
         {"id": "Prop3.2","value": "value4"} 
        ] 
       }, 
       { 
        "id": "Prop4", 
        "data": [ 
         {"id": "Prop4.1","value": "value5"}, 
         {"id": "Prop4.2","value": "value6"}, 
         {"id": "Prop4.3","value": "value7"} 
        ] 
       }, 
      ] 
     }, 
    ] 
}; 

、オブジェクトの構造は完全に異なっています。 この変更は、underscore.jsなどで簡単に行うことはできますか?

答えて

0

新しいオブジェクトを作成するために反復的なアプローチを使用できます。

function convert(object) { 
 
    return Object.keys(object).map(function (k) { 
 
     var o = { id: k }; 
 
     if (object[k] !== null && typeof object[k] === 'object') { 
 
      o.data = convert(object[k]); 
 
     } else { 
 
      o.value = object[k]; 
 
     } 
 
     return o; 
 
    }); 
 
} 
 

 
var source = { Prop1: { Prop2: { "Prop2.1": "value1", "Prop2.2": "value2" }, Prop3: { "Prop3.1": "value3", "Prop3.2": "value4" }, Prop4: { "Prop4.1": "value5", "Prop4.2": "value6", "Prop4.3": "value7" } } }, 
 
    target = { data: convert(source) }; 
 

 
console.log(target);
.as-console-wrapper { max-height: 100% !important; top: 0; }

関連する問題