Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript映射对象键和regexp_Javascript_Arrays_Object - Fatal编程技术网

用javascript映射对象键和regexp

用javascript映射对象键和regexp,javascript,arrays,object,Javascript,Arrays,Object,对象数组包含一个键数据类型,其中有许多从后端获取的数据类型。所有这些数据类型应分为四个部分:数字、字符串、日期和布尔值。因为有很多数据类型,我想用key允许regexp进行对象映射 const data = [ { "title": "id", "dataTypes": "character varying(65535)" }, { "title": "value",

对象数组包含一个键数据类型,其中有许多从后端获取的数据类型。所有这些数据类型应分为四个部分:数字、字符串、日期和布尔值。因为有很多数据类型,我想用key允许regexp进行对象映射

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.数据类型; }
控制台日志数据;伟大的解决方案!但这需要一些时间来计算