我正在尝试从任何对象键名中删除“personal_”。
我尝试运行循环并获取对象键名,然后使用替换函数,但它不会删除Task
。
_tasks
答案 0 :(得分:1)
以下代码片段可以解决问题。
var obj = {
active: false,
personal_user_metadata: {
first_name: 'jon',
last_name: 'doe',
},
personal_app_metadata: {
data: 'blah',
},
email: 'jondoe@example.com'
}
for(name in obj){
if(name.startsWith('personal_')){
var replaced_key = name.replace('personal_', '');
obj[replaced_key] = obj[name];
delete obj[name];
}
}
console.log(obj)

您的代码有什么问题,您只是在进行字符串操作,但不要将这些修改后的密钥指定为该对象的键。
答案 1 :(得分:1)
与@marmeladze相同,但higher order functions
const object = {
active: false,
personal_user_metadata: {
first_name: 'jon',
last_name: 'doe',
},
personal_app_metadata: {
data: 'blah',
},
email: 'jondoe@example.com'
}
Object.keys(object)
.filter(key => key.startsWith(`personal_`))
.forEach(key => {
object[key.replace(`personal_`, ``)] = object[key];
delete object[key];
})
console.log(object)