JS 驼峰转下划线/下划线转驼峰

首先题目:
根据数据结构,把对象类型的 key 值下换线转成驼峰。
例如:

let obj = {
  'ab_cd': 1,
  'bc_de': [
    {
      'cb_ef': 1
    }
  ]
}
转成
{
  'abCd': 1,
  'bcDe': [
    {
      'cbEf': 1
    }
  ]
}
  • 下划线转驼峰 代码
function convert (data) {
  if (typeof data !== 'object' || !data) return data
  if (Array.isArray(data)) {
    return data.map(item => convert(item))
  }

  let newObj = {}
  for (const key in data) {
    if (Object.prototype.hasOwnProperty.call(data, key)) {
      let newKey = key.replace(/_([a-z])/g, res => res[1].toUpperCase())
      newObj[newKey] = convert(data[key])
    }
  }
  return newObj
}
  • 驼峰转下划线代码
    思路同基本一样,就是把正则匹配 key 那里改变一下
function convert (data) {
  if(typeof data !== 'object' || !data) return data
  if (Array.isArray(data)) {
    return data.map((item) =>  underline1(item))
  }

  let newObj = {}
  for(let key in data) {
    let newKey = key.replace(/([A-Z])/g, (res) => {
      return '_' + res.toLowerCase()
    })
    newObj[newKey] = underline1(data[key])
  }
  return newObj
}

结果

let obj1 = {
  'abCd': 1,
  'bcDe': [
    {
      'cbEf': 1
    }
  ]
}
 console.log(convert(obj1));
{
  'ab_cd': 1,
  'bc_de': [
    {
      'cb_ef': 1
    }
  ]
}

你可能感兴趣的:(JS 驼峰转下划线/下划线转驼峰)