Javascript 将嵌套数据结构转换为使用类对象

Javascript 将嵌套数据结构转换为使用类对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我有以下资料: data = [ { "user":{"firstName":"John","lastName":"Doe"}, "info":{"x":1,"y":2}, "moreInfo":{"name":"johns12info"} }, { "user":{"firstName":"John","lastName":"Doe"}, "info":{"x":2,"y":2},

我有以下资料:

data = [
    {
        "user":{"firstName":"John","lastName":"Doe"},
        "info":{"x":1,"y":2},
        "moreInfo":{"name":"johns12info"}
    },
    {
        "user":{"firstName":"John","lastName":"Doe"},
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"johns22info"}
    },
    {
        "user":{"firstName":"Mary","lastName":"Doe"},
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"marys22info"}
    }
data = [
    {
        "user":User({"firstName":"John","lastName":"Doe"}),
        "info":{"x":1,"y":2},
        "moreInfo":{"name":"johns12info"}
    },
    {
        "user":User({"firstName":"John","lastName":"Doe"}),
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"johns22info"}
    },
    {
        "user":User({"firstName":"Mary","lastName":"Doe"}),
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"marys22info"}
    }
]

但是,我希望用户成员是user类型的对象。因此,我希望将上述内容转换为以下内容:

data = [
    {
        "user":{"firstName":"John","lastName":"Doe"},
        "info":{"x":1,"y":2},
        "moreInfo":{"name":"johns12info"}
    },
    {
        "user":{"firstName":"John","lastName":"Doe"},
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"johns22info"}
    },
    {
        "user":{"firstName":"Mary","lastName":"Doe"},
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"marys22info"}
    }
data = [
    {
        "user":User({"firstName":"John","lastName":"Doe"}),
        "info":{"x":1,"y":2},
        "moreInfo":{"name":"johns12info"}
    },
    {
        "user":User({"firstName":"John","lastName":"Doe"}),
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"johns22info"}
    },
    {
        "user":User({"firstName":"Mary","lastName":"Doe"}),
        "info":{"x":2,"y":2},
        "moreInfo":{"name":"marys22info"}
    }
]


我可以使用什么样的javascript ES6转换来保持整洁和健壮(转换不应该明确提到
info
moreInfo
)?在python中,我可能会使用理解来实现这一点,但javascript中的数组理解是非标准的。

您可以使用解构和迭代数据

函数用户({firstName,lastName}){
this.firstName=firstName,
this.lastName=lastName;
}
var数据=[{user:{firstName:“John”,lastName:“Doe”},信息:{x:1,y:2},moreInfo:{name:“johns12info”},{user:{firstName:“John”,lastName:“Doe”},信息:{x:2,y:2},moreInfo:{name:“johns22info”},用户:{firstName:“Mary”,lastName:“Doe”},信息:{x:2,moreInfo;
forEach(o=>o.user=新用户(o.user));
控制台日志(数据)

。作为控制台包装{max height:100%!important;top:0;}
您可以使用解构并迭代数据

函数用户({firstName,lastName}){
this.firstName=firstName,
this.lastName=lastName;
}
var数据=[{user:{firstName:“John”,lastName:“Doe”},信息:{x:1,y:2},moreInfo:{name:“johns12info”},{user:{firstName:“John”,lastName:“Doe”},信息:{x:2,y:2},moreInfo:{name:“johns22info”},用户:{firstName:“Mary”,lastName:“Doe”},信息:{x:2,moreInfo;
forEach(o=>o.user=新用户(o.user));
控制台日志(数据)

.as控制台包装{max height:100%!important;top:0;}
您可以循环数据并将属性更新为
x.user=new user(x.user)

注意:这将覆盖现有阵列

功能用户(obj){
this.firstName=obj.firstName;
this.lastName=obj.lastName;
this.fullName=()=>{
返回this.firstName+“”+this.lastName
}
}
var data=[{“用户”:{“名字”:“约翰”,“姓氏”:“Doe”},信息:{“x”:1,“y”:2},“moreInfo”:{“姓名”:“约翰斯12Info”},{“用户”:{“名字”:“约翰”,“姓氏”:“Doe”},信息:{“x”:2,“y”:2},“moreInfo”:{“姓名”:“约翰斯22Info”},{“用户”:{“名字”:“玛丽”,“姓氏”:“Doe”},信息:{“x”:2,“moreInfo”},{“用户”::{“姓名”:“marys22info”}}];
data.forEach(x=>{
x、 用户=新用户(x.user);
});

data.forEach(x=>{console.log(x.user.fullName())}
您可以循环数据并将属性更新为
x.user=new user(x.user)

注意:这将覆盖现有阵列

功能用户(obj){
this.firstName=obj.firstName;
this.lastName=obj.lastName;
this.fullName=()=>{
返回this.firstName+“”+this.lastName
}
}
var data=[{“用户”:{“名字”:“约翰”,“姓氏”:“Doe”},信息:{“x”:1,“y”:2},“moreInfo”:{“姓名”:“约翰斯12Info”},{“用户”:{“名字”:“约翰”,“姓氏”:“Doe”},信息:{“x”:2,“y”:2},“moreInfo”:{“姓名”:“约翰斯22Info”},{“用户”:{“名字”:“玛丽”,“姓氏”:“Doe”},信息:{“x”:2,“moreInfo”},{“用户”::{“姓名”:“marys22info”}}];
data.forEach(x=>{
x、 用户=新用户(x.user);
});

data.forEach(x=>{console.log(x.user.fullName())})
data=data.map(x=>{x.user=user(x.user);return x})data=data.map(x=>{x.user=user(x.user);return x})很好的描述。很好的描述。