【问题标题】:Javascript, Ramda, Typescript- Rename key to an correct case [duplicate]Javascript,Ramda,Typescript-将密钥重命名为正确的大小写[重复]
【发布时间】:2022-09-22 22:16:19
【问题描述】:

我有一个带有camelCase键的对象

{
  \"studentName\": \"ABC\",
  \"studentId\": \"12345\",
  \"age\": 18,
  \"submittedAt\": \"xxxxxx\"
}

我想将上面的对象转换为键snake_case

{
  \"student_name\": \"ABC\",
  \"student_id\": \"12345\",
  \"age\": 18,
  \"submitted_at\": \"xxxxxx\"
}

我有一个从camelCase转换为snakeCase的功能

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

但是,我对如何在 JSON 对象中转换键感到很困惑。任何建议表示赞赏。

  • (当然在建议的副本中应用您自己的转换代替toLowerCase()

标签: javascript json typescript ramda.js


【解决方案1】:
function convertObjectKeys(object) {
  const newObject = new Object
  const keys = Object.keys(object)

  keys.forEach((k) => {
    newObject[camelToSnakeCase(k)] = object[k] 
  })

  return newObject
}

【讨论】:

  • 如果有效,请将其标记为已接受,谢谢
【解决方案2】:

你可以使用这种方法。

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

const myObj = {
  "studentName": "ABC",
  "studentId": "12345",
  "age": 18,
  "submittedAt": "xxxxxx"
}


Object.keys(myObj).forEach((key) => {
  const newKey = camelToSnakeCase(key);

  if(newKey !== key) {
    myObj[newKey] = myObj[key];
    delete myObj[key];
  }
    
})


console.log(myObj)

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2018-04-04
    • 2011-09-18
    • 2018-06-16
    • 1970-01-01
    • 2013-12-13
    相关资源
    最近更新 更多