【问题标题】:make the first letter in a string uppercase and give a space before the first capital character in a string使字符串中的第一个字母大写,并在字符串中的第一个大写字符前留一个空格
【发布时间】:2023-02-23 04:15:42
【问题描述】:

我有一个包含预定义对象的数组

let columns=[
    {
        "field": "",
        "headerName": "",
        "filter": false,
        "checkboxSelection": true,
        "width": 30
    },
    {
        "field": "",
        "headerName": "",
        "width": 90,
        "suppressMenuHide": true,
        "cellStyle": {
            "white-space": "pre-wrap"
        },
        "rowHeight": 150
    },
    {
        "field": "",
        "headerName": "",
        "suppressMenuHide": true,
        "filterParams": {},
        "width": 130
    },
    {
        "field": "",
        "headerName": "",
        "width": 130,
        "suppressMenuHide": false
    },
    {
        "field": "",
        "headerName": "",
        "width": 130
    },
    {
        "field": "",
        "headerName": "",
        "minWidth": 80
    },
    {
        "field": "",
        "headerName": "",
        "width": 130
    }
]

我的源数组“dataSet”具有需要作为列数组中的值属性的键

let dataSet=[
    {
        "sector": "Bengaluru (BLR)",
        "sales": "high",
        "flightNumber": "08945",
        "ruleType": "Data rule",
        "failedRow": 70,
        "delta": 3
    },
    {
        "sector": "Abu dhabi (AUH)",
        "sales": "high",
        "flightNumber": "48646",
        "ruleType": "Rule set",
        "failedRow": 70,
        "delta": 3
    },
    {
        "sector": "Mumbai (BOM)",
        "sales": "high",
        "flightNumber": "65235",
        "ruleType": "Quality rule",
        "failedRow": 70,
        "delta": 3
    },
    {
        "sector": "Phuket (PKT)",
        "sales": "high",
        "flightNumber": "70946",
        "ruleType": "Data rule",
        "failedRow": 70,
        "delta": 4
    },
    {
        "sector": "Muscat (MCT)",
        "sales": "high",
        "flightNumber": "37546",
        "ruleType": "Rule set",
        "failedRow": 70,
        "delta": 13
    },
    {
        "sector": "Abu dhabi (AUH)",
        "sales": "high",
        "flightNumber": "48646",
        "ruleType": "Rule set",
        "failedRow": 70,
        "delta": 3
    },
    {
        "sector": "Mumbai (BOM)",
        "sales": "high",
        "flightNumber": "65235",
        "ruleType": "Quality rule",
        "failedRow": 70,
        "delta": 3
    },
    {
        "sector": "Mumbai (BOM)",
        "sales": "high",
        "flightNumber": "65235",
        "ruleType": "Quality rule",
        "failedRow": 70,
        "delta": 3
    },
    {
        "sector": "Phuket (PKT)",
        "sales": "high",
        "flightNumber": "70946",
        "ruleType": "Data rule",
        "failedRow": 70,
        "delta": 4
    },
    {
        "sector": "Muscat (MCT)",
        "sales": "high",
        "flightNumber": "37546",
        "ruleType": "Rule set",
        "failedRow": 70,
        "delta": 13
    }
]

我的目标是用数据集数组对象的相应键替换列数组键“field”和“headerName”, IE, 我的对象键的列数组值应该是数据集数组对象中的键 操作后我的列数组应该是这样的,

let columns=[
        {
            "field": "",
            "headerName": "",
            "filter": false,
            "checkboxSelection": true,
            "width": 30
        },
        {
            "field": "sector",
            "headerName": "Sector",
            "width": 90,
            "suppressMenuHide": true,
            "cellStyle": {
                "white-space": "pre-wrap"
            },
            "rowHeight": 150
        },
        {
            "field": "sales",
            "headerName": "Sales"
            "suppressMenuHide": true,
            "filterParams": {},
            "width": 130
        },
        {
            "field": "flightNumber",
            "headerName": "Flight Number"
            "width": 130,
            "suppressMenuHide": false
        },
        {
            "field": "ruleType",
            "headerName": "Rule Type",
            "width": 130
        },
        {
            "field": "failedRow",
            "headerName": "Failed Row",
            "minWidth": 80
        },
        {
            "field": "delta",
            "headerName": "Delta",
            "width": 130
        }
    ]

有解决办法来实现这一目标吗?

【问题讨论】:

    标签: javascript string


    【解决方案1】:

    我认为这就是您要的:

    let columns=[
        {
            "field": "",
            "headerName": "",
            "filter": false,
            "checkboxSelection": true,
            "width": 30
        },
        {
            "field": "",
            "headerName": "",
            "width": 90,
            "suppressMenuHide": true,
            "cellStyle": {
                "white-space": "pre-wrap"
            },
            "rowHeight": 150
        },
        {
            "field": "",
            "headerName": "",
            "suppressMenuHide": true,
            "filterParams": {},
            "width": 130
        },
        {
            "field": "",
            "headerName": "",
            "width": 130,
            "suppressMenuHide": false
        },
        {
            "field": "",
            "headerName": "",
            "width": 130
        },
        {
            "field": "",
            "headerName": "",
            "minWidth": 80
        },
        {
            "field": "",
            "headerName": "",
            "width": 130
        }
    ]
    
    
    const e = {
      "sector": "Mumbai (BOM)",
      "sales": "high",
      "flightNumber": "65235",
      "ruleType": "Quality rule",
      "failedRow": 70,
      "delta": 3
    }
    
    const unCamelCase = (s) => s[0].toUpperCase() + s.substring(1).replace(/([A-Z])/g, r => ` ${r}`)
    
    const res = columns.map( (c,i) => i===0 ? c : (i = Object.keys(e)[i-1], {...c, field: i, headerName:unCamelCase(i)}))
    
    console.log(res)
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    基本上只是获取对象的键并通过将它们放入提供的数组的 fieldheaderName 属性中来为其创建列数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 2015-07-24
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多