Javascript 无法将嵌套对象转换为对象数组,反之亦然

Javascript 无法将嵌套对象转换为对象数组,反之亦然,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个以下类型的对象: var sourceObj = { "feature1": [ {"id":"1","name":"abc","enabled":false,"type":"type1"}, {"id":"2","name":"xyz","enabled":false,"type":"type1"}

我有一个以下类型的对象:

var sourceObj = {
                   "feature1": [
                                 {"id":"1","name":"abc","enabled":false,"type":"type1"},
                                 {"id":"2","name":"xyz","enabled":false,"type":"type1"}
                                ]
                   ,
                   "feature2": [
                                  {"id":"3","name":"lmn","enabled":true,"type":"type2"},
                                  {"id":"4","name":"pqr","enabled":false,"type":"type2"}
                                ]
                }


需要转换为以下类型的对象数组:

var destArr =  [
                  { "feature_name":"feature1", 
                    "feature_details":[
                                        {"id":"1","name":"abc","enabled":false,"type":"type1"},
                                        {"id":"2","name":"xyz","enabled":true,"type":"type1"}
                                      ]
                  },
                  { "feature_name":"feature2",
                    "feature_details":[
                                        {"id":"3","name":"lmn","enabled":true,"type":"type2"}
                                        {"id":"4","name":"pqr","enabled":false,"type":"type2"}
                                      ]
                  } 
              ]

我尝试了以下方法将源对象转换为结果对象数组,并将结果对象数组转换回源对象

//Converting source object to array of objects
let arr = Object.keys(sourceObj).map(key => {
    return sourceObj[key];
  })


converting array of objects back to source objetc
let obj = Object.assign({}, ...destArr.map(item => ({ [item.name]: item.value })));


您可以使用
Object.entries
在一次拍摄中映射所有内容。 要返回到原始结构,可以对生成的数组使用
reduce
(请参见下面的
backToOriginalArray

var sourceObj={
“特点1”:[{
“id”:“1”,
“名称”:“abc”,
“启用”:false,
“类型”:“类型1”
},
{
“id”:“2”,
“名称”:“xyz”,
“启用”:false,
“类型”:“类型1”
}
],
“特点2”:[{
“id”:“3”,
“名称”:“lmn”,
“启用”:正确,
“类型”:“类型2”
},
{
“id”:“4”,
“名称”:“pqr”,
“启用”:false,
“类型”:“类型2”
}
]
};
//步骤1:对原始对象使用object.entries来构建对象数组。
var destArray=Object.entries(sourceObj.map)([key,value])=>({
“功能名称”:键,
“功能详细信息”:值
}));
log(destArray);
//步骤2:对生成的数组使用reduce来获得与原始数组结构相同的对象。
var backToOriginalArray=destArray.reduce((acc,{feature\u name,feature\u details})=>(acc[feature\u name]=feature\u details,acc),{});

log(backtooriginaldarray)
映射
对象。初始对象的条目

var sourceObj={
“特点1”:[
{“id”:“1”,“name”:“abc”,“enabled”:false,“type”:“type1”},
{“id”:“2”,“name”:“xyz”,“enabled”:false,“type”:“type1”}
],
“特点2”:[
{“id”:“3”,“name”:“lmn”,“enabled”:true,“type”:“type2”},
{“id”:“4”,“name”:“pqr”,“enabled”:false,“type”:“type2”}
]
};
const destArr=Object.entries(sourceObj.map)(
([feature_name,feature_details])=>({feature_name,feature_details})
);

控制台日志(destArr)我在这里做了类似的操作->还将对象数组的结果返回到源对象?使用
对象。从条目
还将对象数组的结果返回到源对象?@vjr我不理解你的问题。你想要一种回到原始对象的方法吗?