【问题标题】:Javascript: Convert returned JSON Object Properties to PascalCaseJavascript:将返回的 JSON 对象属性转换为 PascalCase
【发布时间】:2021-03-05 13:52:09
【问题描述】:

我有一个 JSON 对象。我想将数组转换为 PascalCase:

contacts: [{ givenName: "Matt", familyName: "Berry" }]

Contacts: [{ GivenName: "Matt", FamilyName: "Berry" }]

以下答案无效

Lodash 有 Pascal case 函数吗?它没有在运行时找到它。

_.mapKeys(obj, (v, k) => _.camelCase(k))

目前使用 Typescript Angular 10 库。

Convert returned JSON Object Properties to (lower first) camelCase

希望遍历对象数组的所有成员,

【问题讨论】:

    标签: javascript json angular typescript lodash


    【解决方案1】:

    你可以这样做;

    import {camelCase, startCase} from 'lodash';
    
    startCase(camelCase("givenName")).replace(/ /g, ''); // will procude GivenName
    

    查看此gist 了解所有其他情况。

    如果要转换一个对象的所有属性,可以使用这个;

    const pascalizeKeys = (obj) => {
      if (Array.isArray(obj)) {
        return obj.map(v => pascalizeKeys(v));
      } else if (obj !== null && obj.constructor === Object) {
        return Object.keys(obj).reduce(
          (result, key) => ({
            ...result,
            [toPascalCase(key)]: pascalizeKeys(obj[key]),
          }),
          {},
        );
      }
      return obj;
    };
    
    const toPascalCase = (str) => startCase(camelCase(str)).replace(/ /g, '')
    

    取自 answer 的代码并进一步修改以进行帕斯卡化。

    这是stackblitz,您可以进一步检查。

    【讨论】:

    • 谢谢,最后一件事,我如何让函数在对象数组上工作?它在 [0] 处出现错误
    【解决方案2】:

    PascalCase 似乎与 camelCase 几乎相同,唯一的区别是 PascalCase 中的第一个字母大写。因此,您应该能够使用 lodash 中的 camelCase 函数,然后使用另一个函数将 camelCase 单词的第一个字母大写,例如像这样:

    const capitalize = (str) => {
      return str.charAt(0).toUpperCase() + str.slice(1)
    }
    

    所以整个解决方案大概是这样的:

    _.mapKeys(obj, (v, k) => capitalize(_.camelCase(k)))
    

    【讨论】:

    • 这会遍历一个类 jsonobject 的所有成员吗?
    • 您将需要使用 mapkeys 函数或您链接的另一个 stackoverflow 问题中的答案之一。我在答案中编辑了一个可能的解决方案,但尚未对其进行测试
    • 我只是给出了分数并接受了答案,请随意竖起大拇指,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2015-08-11
    • 1970-01-01
    • 2018-09-25
    • 2022-11-19
    • 2020-02-02
    • 2020-01-07
    相关资源
    最近更新 更多