map将key转换为驼峰命名
时间: 2024-01-15 18:04:31 浏览: 73
如果你想将一个对象的所有key都转换为驼峰命名的形式,在JavaScript中可以使用递归函数和map方法来实现。示例代码如下:
```javascript
function toCamelCase(str) {
return str.replace(/([-_][a-z])/ig, ($1) => {
return $1.toUpperCase()
.replace('-', '')
.replace('_', '');
});
}
function recursiveMap(obj) {
if (Array.isArray(obj)) {
return obj.map(item => recursiveMap(item));
} else if (typeof obj === 'object' && obj !== null) {
return Object.keys(obj).reduce((acc, key) => {
const camelKey = toCamelCase(key);
acc[camelKey] = recursiveMap(obj[key]);
return acc;
}, {});
} else {
return obj;
}
}
// 示例:
const data = {
user_name: 'Alice',
user_age: 20,
user_address: {
city_name: 'Beijing',
street_name: 'Xinjiekou'
},
user_hobbies: [
'reading',
'traveling'
]
};
const camelCaseData = recursiveMap(data);
console.log(camelCaseData);
// 输出:{
// "userName": "Alice",
// "userAge": 20,
// "userAddress": {
// "cityName": "Beijing",
// "streetName": "Xinjiekou"
// },
// "userHobbies": [
// "reading",
// "traveling"
// ]
// }
```
上述代码中,toCamelCase函数用于将一个字符串转换为驼峰命名的形式。在recursiveMap函数中,首先判断obj是否为数组,如果是,则对每个元素递归调用recursiveMap函数,并使用map方法将结果组成一个新的数组返回;如果不是数组但是是对象,则对每个键值对递归调用recursiveMap函数,并使用reduce方法将结果组成一个新的对象返回;如果obj既不是数组也不是对象,则直接返回obj。在处理对象键值对的过程中,我们使用toCamelCase函数将key转换为驼峰命名的形式,并将结果赋值给新对象的key。最终,recursiveMap函数将返回一个新的对象,其中所有key都已经被转换为驼峰命名的形式。
阅读全文