如何重定义对象属性键以移除前缀‘Class’?
对象键名批量去除前缀的简便实现方法
这里有几种简便的实现方式,根据你的场景选择即可:
1. 解构赋值直接重命名(适合键数量少且固定的情况)
如果对象的键数量不多且固定,直接通过解构赋值重命名是最直观的方式:
const originalObj = { ClassName: "John", ClassEmail: "john@doe.com", ClassPhone: "1234567" }; // 解构时直接将带前缀的键重命名为目标键名 const { ClassName: Name, ClassEmail: Email, ClassPhone: Phone } = originalObj; const newObj = { Name, Email, Phone }; console.log(newObj); // 输出:{ Name: "John", Email: "john@doe.com", Phone: "1234567" }
2. 批量遍历转换(适合键数量多或前缀统一的情况)
如果对象有大量带统一前缀的键,用Object.fromEntries结合遍历处理更高效:
const originalObj = { ClassName: "John", ClassEmail: "john@doe.com", ClassPhone: "1234567" }; const newObj = Object.fromEntries( Object.entries(originalObj).map(([key, value]) => { // 移除键名开头的"Class"前缀 const newKey = key.replace(/^Class/, ''); return [newKey, value]; }) ); console.log(newObj); // 输出:{ Name: "John", Email: "john@doe.com", Phone: "1234567" }
正则/^Class/确保只匹配键名开头的前缀,避免误删键名中间的相同字符。
3. 固定长度前缀截取(已知前缀长度时更高效)
因为前缀"Class"是固定的5个字符,也可以直接用slice截取键名的后半部分:
const originalObj = { ClassName: "John", ClassEmail: "john@doe.com", ClassPhone: "1234567" }; const newObj = Object.keys(originalObj).reduce((result, key) => { // 从索引5开始截取,跳过"Class"前缀 result[key.slice(5)] = originalObj[key]; return result; }, {}); console.log(newObj); // 输出:{ Name: "John", Email: "john@doe.com", Phone: "1234567" }
这种方法不需要正则,执行效率更高,适合前缀长度固定的场景。
内容的提问来源于stack exchange,提问作者rjpedrosa
相关产品推荐
相关产品推荐

