如何从对象键名中删除字符串?

时间:2018-05-20 18:59:49

标签: javascript

我正在尝试从任何对象键名中删除“personal_”。

我尝试运行循环并获取对象键名,然后使用替换函数,但它不会删除Task

_tasks

2 个答案:

答案 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)