对象结构的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您到底尝试了什么?网站上可能会有这样的问题。你能多尝试一些东西,做一些研究吗?另外,要弄清楚从一个到另一个的逻辑。缩进帮助你到底尝试了什么?网站上可能会有关于这样做的问题。你能多尝试一些东西,做一些研究吗?另外,要清楚用于从一个数组到另一个数组的逻辑。您正在修改源数组,因此不需要返回“新”数组。您正在修改源数组,因此不需要返回