首先题目:
根据数据结构,把对象类型的 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
}
]
}