记一道面试题

const testData = {
a_bbb: 123,
a_g: [1, 2, 3, 4],
a_d: {
s: 2,
s_d: 3
},
a_f: [1, 2, 3, {
a_g: 'a_g_123'
}],
a_d_s: 1
}

/**
* 将一个json数据的所有key从下划线改为驼峰
*
* @param {object | array} value 待处理对象或数组
* @returns {object | array} 处理后的对象或数组
*/
function mapKeysToCamelCase(data) {
if (typeof data !== 'object') {
return data;
}

const res = {};
for(let key in data) {
const newKey = key.split('_').reduce((res, next) => {
return res + next[0].toUpperCase() + next.slice(1);
})
const value = data[key];

if (Array.isArray(value)) {
res[newKey] = value.map(mapKeysToCamelCase);
} else if (typeof value === 'object') {
res[newKey] = mapKeysToCamelCase(value);
} else {
res[newKey] = value;
}
}

return res;

转载于:https://www.cnblogs.com/yjmBlogs/p/10124672.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值