JS将对象下划线格式的key转为驼峰格式

3,937 阅读1分钟

主要思路

  1. 新建一个待返回的result 对象;
  2. 拿到对象所有的key(Object.keys),遍历keys;
  3. 保存当前key对应的值 value;
  4. 正则匹配下划线格式;
  5. 匹配到话进行替换即可,替换使用replace函数,主要是使用replace的第二个参数
  6. 判断 value 是否为对象,是的话需要递归处理;
  7. 把新的key及value放入result中;
  8. 返回reslut 即可;

代码实现

function isObject(obj) {
	return Object.prototype.toString.call(obj) === '[object Object]';
}
function transfer(originObj) {
	// 函数首次调用判断
	if (!isObject(originObj)) return originObj;

	const result = {};

	const reg = /_{1,2}\w/g; // 这里正则的格式取决于自己
	const keys = Object.keys(originObj);
	for(let key of keys) {
		const value = originObj[key];
		key = key.replace(reg, (match) => match.replace(/_/g, '').toLocaleUpperCase());
		result[key] = isObject(value) ? transfer(value) : value;
	}

	return result;
}

String.prototype.replace 详情

MDN String.prototype.replace()

总结

实现思路其实有点类似于深拷贝的思路,不相同的地方在于没有处理 RegExp、Date、Symbol等这些类型的值,当然实现也是仅供参考,若有不对的地方可以评论区讨论;