版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hefeng6500/article/details/82960761
将类似于 info 格式转化为 info2
var info = {
id: 1,
id1: 2,
userName1: '刘玄德',
userName2: '刘玄德',
userName3: '大哥',
userAge: 45,
userAge1: 46,
userAge2: 47
}
var info2 = {
id: 1,
id_1: 2,
user_name_1: '刘玄德',
user_name_2: '刘玄德',
user_name_3: '刘玄德',
user_age: 45,
user_age_1: 46,
user_age_2: 47
}
下属两种解决方案:可谓相当潇洒的答案,一行搞定
// segmentDefault回答者 asseek 的答案:
const toLine = hump => hump.replace(/([A-Z]|\d)/g, (a, l) => `_${l.toLowerCase()}`);
var info = {
id: 1,
id1: 2,
userName1: '刘玄德',
userName2: '刘玄德',
userName3: '大哥',
userAge: 45,
userAge1: 46,
userAge2: 47
};
var newObj = {}
for (let k in info) {
newObj[toLine(k)] = info[k]
}
console.log(newObj)
本人的答案,想了很久,asseek 的答案可谓是天上飞,我的答案就是地上爬了
<script>
var info = {
id: 1,
id1: 2,
userName1: '刘玄德',
userName2: '刘玄德',
userName3: '大哥',
userAge: 45,
userAge1: 46,
userAge2: 47
}
var info2 = {
id: 1,
id_1: 2,
user_name_1: '刘玄德',
user_name_2: '刘玄德',
user_name_3: '刘玄德',
user_age: 45,
user_age_1: 46,
user_age_2: 47
}
function copy(obj){//用于复制一个对象
var newobj = {};
for ( var attr in obj) {
newobj[attr] = obj[attr];
}
return newobj;
}
var changeObj = function (obj) {
var copyobj = copy(obj)
var regNum = new RegExp(/\d/)
var regStr = new RegExp(/[A-Z]/g)
var arr = Object.keys(obj);
var newObj = {}
arr.forEach((k, index) => {
var kArr = k.split('')
var newK = ''
kArr.forEach((item,index)=>{
if(regNum.test(item)){
kArr[index] = "_" + item
}
if(regStr.test(item)){
kArr[index] = "_" + item.toLowerCase()
}
})
newKey = kArr.join('')
newObj[newKey] = obj[k]
console.log(newKey)
})
console.log(newObj)
return newObj
}
changeObj(info)
</script>