用javascript映射对象键和regexp
对象数组包含一个键数据类型,其中有许多从后端获取的数据类型。所有这些数据类型应分为四个部分:数字、字符串、日期和布尔值。因为有很多数据类型,我想用key允许regexp进行对象映射用javascript映射对象键和regexp,javascript,arrays,object,Javascript,Arrays,Object,对象数组包含一个键数据类型,其中有许多从后端获取的数据类型。所有这些数据类型应分为四个部分:数字、字符串、日期和布尔值。因为有很多数据类型,我想用key允许regexp进行对象映射 const data = [ { "title": "id", "dataTypes": "character varying(65535)" }, { "title": "value",
const data = [
{
"title": "id",
"dataTypes": "character varying(65535)"
},
{
"title": "value",
"dataTypes": "int"
},
{
"title": "number_value",
"dataTypes": "bigint"
},
{
"title": "first_name",
"dataTypes": "varchar"
},
{
"title": "last_name",
"dataTypes": "char"
},
{
"title": "activated_date",
"dataTypes": "date without timestamp"
},
{
"title": "selected",
"dataTypes": "boolean"
},
]
const objectMap = {
"char" : "string",
"varchar" : "string",
"character varying(65535)" : "string",
"int" : "number",
"numeric" : "number",
"bigint" : "number",
"boolean" : "boolean",
"date" : "date",
"date without timestamp" : "date"
};
data.map(el => el.dataTypes = objectMap[el.dataTypes])
console.log(data)
由于我需要在对象中添加更多的键,是否仍可以使用regexp作为键
const objectMap = {
.*char.* : "string"
}
预期结果:
const data = [
{
"title": "id",
"dataTypes": "string"
},
{
"title": "value",
"dataTypes": "int"
},
{
"title": "number_value",
"dataTypes": "int"
},
{
"title": "first_name",
"dataTypes": "string"
},
{
"title": "last_name",
"dataTypes": "string"
},
{
"title": "activated_date",
"dataTypes": "date"
},
{
"title": "selected",
"dataTypes": "boolean"
},
]
您可以使用另一个数组,该数组包含所有可能的替换值和匹配条件,然后可以是字符串、正则表达式、函数或 常数数据=[ {title:id,数据类型:character varying65535}, {title:value,数据类型:int}, {title:number_value,数据类型:bigint}, {title:first_name,数据类型:varchar}, {title:last_name,数据类型:char}, {title:activated_date,dataTypes:date without timestamp}, {title:selected,数据类型:boolean}, ]; 常量替换=[ {条件:/.*char.*/,替换:string}, {条件:int,替换:number}, {条件:数字,替换:数字}, {条件:bigint,替换:number}, {条件:布尔,替换:布尔}, {标准:/date.*/,替换:date} ]; data.forEachd=>{ 常量指针=替换。findr=>{ 如果r.criteria的类型===字符串{ 返回d.dataTypes==r.criteria; }否则{ 返回r.criteria.testd.dataTypes; } }; d、 oldDataTypes=d.dataTypes;//仅用于在控制台中进行更简单的验证 d、 数据类型=针?针。替换:d.数据类型; }
控制台日志数据;伟大的解决方案!但这需要一些时间来计算