对象结构的Javascript转换数组

对象结构的Javascript转换数组,javascript,object,array-map,Javascript,Object,Array Map,我正在尝试将一组对象结构转换为如下所示: [ { id: 1, val: "bool", name: "somename", entities: [ { id: 1, name: "varchar", type: "string" } ] }, { id: 2, val: "bool", name: "somename", entities:

我正在尝试将一组对象结构转换为如下所示:

[
  {
    id: 1,
    val: "bool",
    name: "somename",
    entities: [
      {
        id: 1,
        name: "varchar",
        type: "string"
      }
    ]
  },
  {
    id: 2,
    val: "bool",
    name: "somename",
    entities: [
      {
        id: 1,
        name: "varchar",
        type: "string"
      }
    ]
  }
]
为此:

[
  {
    id: 1,
    val: "bool",
    name: "somename",
    entitiesName: "varchar",
    entitiesType: "string"
  },
  {
    id: 2,
    val: "bool",
    name: "somename",
    entitiesName: "varchar",
    entitiesType: "string"
  }
]
所以或多或少我想从
实体
中获取两个值,并将它们转换为根对象中的键/值

我尝试过使用
Object.entries(data.map()
,但是我被卡住了使用
Array.map()

  • 创建两个新的键值对
    entitiesName
    entitiesType
  • 删除
    实体
  • var数据=[{
    id:1,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“瓦查尔”,
    类型:“字符串”
    }]
    },
    {
    id:2,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“瓦查尔”,
    类型:“字符串”
    }]
    }
    ];
    data=data.map(
    (el)=>{
    el.entitiesName=el.entities[0]。名称;
    el.entitiesType=el.entities[0]。类型;
    删除所有实体;
    返回el;
    }
    );
    控制台日志(数据)使用
    Array.map()

  • 创建两个新的键值对
    entitiesName
    entitiesType
  • 删除
    实体
  • var数据=[{
    id:1,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“瓦查尔”,
    类型:“字符串”
    }]
    },
    {
    id:2,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“瓦查尔”,
    类型:“字符串”
    }]
    }
    ];
    data=data.map(
    (el)=>{
    el.entitiesName=el.entities[0]。名称;
    el.entitiesType=el.entities[0]。类型;
    删除所有实体;
    返回el;
    }
    );
    
    控制台日志(数据)您可以使用销毁来收集所有想要的属性并构建新对象

    var数组=[{id:1,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}],{id:2,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}],
    结果=array.map(
    ({id,val,name,entities:[{name:entitiesName,type:entitiesType}]})=>
    ({id,val,name,entitiesName,entitiesType})
    );
    控制台日志(结果)
    
    。作为控制台包装{max height:100%!important;top:0;}
    您可以使用销毁来收集所有想要的属性并构建新对象

    var数组=[{id:1,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}],{id:2,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}],
    结果=array.map(
    ({id,val,name,entities:[{name:entitiesName,type:entitiesType}]})=>
    ({id,val,name,entitiesName,entitiesType})
    );
    控制台日志(结果)
    
    .as控制台包装{max height:100%!重要;top:0;}
    以避免修改源数组。

    var数据=[{id:1,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}],{id:2,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}];
    var结果=data.map((o)=>{
    var obj={…o,'entitiesName':o.entities[0]。名称,'entitiesType':o.entities[0]。类型};
    删除对象实体;
    返回obj;
    });
    控制台日志(数据);
    控制台日志(结果)
    
    。作为控制台包装器{
    最大高度:100%!重要
    
    }
    以避免对源阵列进行修改。

    var数据=[{id:1,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}],{id:2,val:“bool”,name:“somename”,实体:[{id:1,name:“varchar”,type:“string”}];
    var结果=data.map((o)=>{
    var obj={…o,'entitiesName':o.entities[0]。名称,'entitiesType':o.entities[0]。类型};
    删除对象实体;
    返回obj;
    });
    控制台日志(数据);
    控制台日志(结果)
    
    。作为控制台包装器{
    最大高度:100%!重要
    
    }
    您可以使用Array和spread运算符的Array.map函数来完成此操作

    var数据=[{
    id:1,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“varchar1”,
    类型:“字符串”
    }]
    },
    {
    id:2,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“varchar2”,
    类型:“字符串”
    }]
    }
    ];
    var result=data.map(
    (el)=>{
    常数{实体,…无实体}=el;
    返回{…noentities,entitiesName:el.entities[0]。名称,entitiesType:el.entities[0]。类型}
    }
    );
    
    console.log(result)
    您可以通过使用Array和spread操作符的Array.map函数来实现这一点

    var数据=[{
    id:1,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“varchar1”,
    类型:“字符串”
    }]
    },
    {
    id:2,
    瓦尔:“布尔”,
    姓名:“某某姓名”,
    实体:[{
    id:1,
    名称:“varchar2”,
    类型:“字符串”
    }]
    }
    ];
    var result=data.map(
    (el)=>{
    常数{实体,…无实体}=el;
    返回{…noentities,entitiesName:el.entities[0]。名称,entitiesType:el.entities[0]。类型}
    }
    );
    
    console.log(result)
    Indentation helps您到底尝试了什么?网站上可能会有这样的问题。你能多尝试一些东西,做一些研究吗?另外,要弄清楚从一个到另一个的逻辑。缩进帮助你到底尝试了什么?网站上可能会有关于这样做的问题。你能多尝试一些东西,做一些研究吗?另外,要清楚用于从一个数组到另一个数组的逻辑。您正在修改源数组,因此不需要返回“新”数组。您正在修改源数组,因此不需要返回