【问题标题】:How to remove string from object key name? [duplicate]如何从对象键名中删除字符串? [复制]
【发布时间】:2018-05-20 18:59:48
【问题描述】:

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

我尝试运行一个循环并获取对象键名,然后对其使用替换功能,但它不会删除 personal_

var object = {
  active: false,
  personal_user_metadata: {
    first_name: 'jon',
    last_name: 'doe',
	},
  personal_app_metadata: {
  	data: 'blah',
  },
  email: 'jondoe@example.com'
}

for(name in object){
   name.replace('personal_', '')
}

console.log(object)

【问题讨论】:

    标签: javascript


    【解决方案1】:

    低于 sn-p 就可以了。

        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)

    您的代码有什么问题,您只是在进行字符串操作,但不要将那些修改后的键分配为该对象的键。

    【讨论】:

    • 我理解您关于不将修改后的键分配回对象的观点,但在您的示例中,所有其余键都被删除。
    • 抱歉,我刚刚错过了一件事。我认为所有键都有personal 前缀。我已经修好了
    【解决方案2】:

    与@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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2011-03-28
      • 2014-01-26
      • 2016-02-28
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多