JS对象去掉下划线属性
最近在写node端,所以遇到数据库直接返回数据带下划线的情况
需要把下划线属性换成驼峰属性
封装了两个方法
-
将下划线换为驼峰
const replaceUnderLine = (val, char = '_') => {
const arr = val.split('')
const index = arr.indexOf(char)
arr.splice(index, 2, arr[index+1].toUpperCase())
val = arr.join('')
return val
}
console.log(replaceUnderLine('test_prop')) // testProp
replaceUnderLine = (val, char = '_') => {
const arr = val.split('')
const index = arr.indexOf(char)
arr.splice(index, 2, arr[index+1].toUpperCase())
val = arr.join('')
return val
}
console.log(replaceUnderLine('test_prop')) // testProp
-
替换对象中的下划线属性
const filterUnderLine = (obj, char = '_') => {
const arr = Object.keys(obj).filter(item => item.indexOf(char) !== -1)
arr.forEach(item => {
const before = obj[item]
const key = replaceUnderLine(item)
obj[key] = before
delete obj[item]
})
return obj
}
console.log(filterUnderLine({test_name: 'frank'})) // { testName: 'frank }
filterUnderLine = (obj, char = '_') => {
const arr = Object.keys(obj).filter(item => item.indexOf(char) !== -1)
arr.forEach(item => {
const before = obj[item]
const key = replaceUnderLine(item)
obj[key] = before
delete obj[item]
})
return obj
}
console.log(filterUnderLine({test_name: 'frank'})) // { testName: 'frank }
当然其中的_可以换成任意字符,只要在方法的第二个参数传入就可以了
喜欢就点个赞吧,谢谢~