[英]convert tree structure json to linear json
here I have a tree of objects like the following, perhaps created using the excellent algorithm在这里,我有一个像下面这样的对象树,可能是使用优秀的算法创建的
tableList = [
{
repo_id: 1,
databasename: "IES",
repo_name: "IES.dbo.BuildVersion",
schema_name: "dbo",
table_name: "BuildVersion",
column_name: [
"Database Version",
"ModifiedDate",
"SystemInformationID",
"VersionDate",
"datetime",
],
datatype: ["nvarchar", "datetime", "tinyint", "datetime", "tinyint"],
},
];
and the datatype values and the column_name values are correspondent to each other i mean,,column_name :Database Version is of datatype "nvarchar" and so on.并且数据类型值和 column_name 值彼此对应,我的意思是,column_name :Database Version 是数据类型“nvarchar”等等。 so how can i convert it to flat array of objects like below
那么我如何将其转换为如下所示的平面对象数组
tableList = [
{
repo_id: 1,
databasename: "IES",
repo_name: "IES.dbo.BuildVersion",
schema_name: "dbo",
table_name: "BuildVersion",
column_name: "Database Version",
datatype: "nvarchar",
},
{
repo_id: 1,
databasename: "IES",
repo_name: "IES.dbo.BuildVersion",
schema_name: "dbo",
table_name: "BuildVersion",
column_name: "ModifiedDate",
datatype: "tinyint",
},
{
repo_id: 1,
databasename: "IES",
repo_name: "IES.dbo.BuildVersion",
schema_name: "dbo",
table_name: "BuildVersion",
column_name: "SystemInformationID",
datatype: "tinyint",
},
{
repo_id: 1,
databasename: "IES",
repo_name: "IES.dbo.BuildVersion",
schema_name: "dbo",
table_name: "BuildVersion",
column_name: "VersionDate",
datatype: "datetime",
},
{
repo_id: 1,
databasename: "IES",
repo_name: "IES.dbo.BuildVersion",
schema_name: "dbo",
table_name: "BuildVersion",
column_name: "datetime",
datatype: "tinyint",
}
];
You can use a map statement.您可以使用map语句。
tableListReformatted = tableList[0].datatype.map( (datatype, index) => {
const {
repo_id,
databasename,
repo_name,
schema_name,
table_name
} = tableList[0]
return {
repo_id,
databasename,
repo_name,
schema_name,
table_name,
column_name: tableList[0].columnName[index],
datatype
}
})
If you wanted to flatten a tableList
that has many entries, you could do this process for each entry and push the results to an array:如果您想展平具有许多条目的
tableList
,您可以对每个条目执行此过程并将结果推送到数组:
// create empty array to start
const tableListReformatted = []
tableList.forEach( listItem => {
// for each item in the tableList, create an array
// of objects which is mapped from the .datatype property
const flattenedItems = listemItem.dataType.map( (datatype, index) => {
return {
...listItem // use all the existing properties
column_name: listItem.columnName[index], // overwrite column_name
datatype // overwrite datatype
}
})
// spread that array into the empty starter array
tabeListeReformatted.push(...flattenedItems)
})
This may need some tweaking, but your question is relatively simple and this is all great array-manipulation practice.这可能需要一些调整,但你的问题相对简单,这都是很好的数组操作实践。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.