如何将对象数组的键替换下划线为空格并大写每个词首字母?
解决方案
你只需要在替换下划线的基础上,给每个单词的首字母做大写处理就行,直接修改convert函数里的键转换逻辑即可:
function convert(obj) { const result = {}; Object.keys(obj).forEach(function (key) { // 先替换下划线为空格,再处理每个单词首字母大写 const formattedKey = key.replace(/_/g, ' ') .split(' ') .map(word => word.charAt(0).toUpperCase() + word.slice(1)) .join(' '); result[formattedKey] = obj[key]; }); return result; } var array = [ {first_name: 'Mike', last_name: 'Kelly'}, {first_name: 'Charles', last_name: 'Bronson'}, {first_name: 'Chuck', last_name: 'Norris'}, ]; var result = array.map(function (o) { return convert(o); }); console.log(result);
关键逻辑拆解
key.replace(/_/g, ' '):把下划线替换成空格,得到first name这类字符串.split(' '):按空格分割成单词数组,比如['first', 'name'].map(word => word.charAt(0).toUpperCase() + word.slice(1)):遍历每个单词,将首字母转大写,其余字母保持原样,得到['First', 'Name'].join(' '):把数组拼接回完整的格式化为First Name的键名
如果偏好正则一步处理,也可以用下面的写法替换键转换部分:
const formattedKey = key.replace(/_(\w)/g, (_, char) => ' ' + char.toUpperCase()) .replace(/^\w/, char => char.toUpperCase());
这个正则的作用是:
- 匹配下划线及后续字母,将下划线替换为空格并把后续字母转大写
- 单独处理字符串开头的第一个字母,确保它也转为大写
两种方式都能实现需求,选你习惯的写法就行。
内容的提问来源于stack exchange,提问作者Teshie Ethiopia
相关产品推荐
相关产品推荐

