代码之家  ›  专栏  ›  技术社区  ›  Stark

如何从对象键名称中删除字符串?[副本]

  •  0
  • Stark  · 技术社区  · 6 年前

    这个问题已经有了答案:

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

    我尝试运行一个循环并获取对象密钥名,然后对其使用replace函数,但它不会删除 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)
    2 回复  |  直到 6 年前
        1
  •  1
  •   marmeladze    6 年前

    下面的代码片段将起作用。

        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)

    您的代码有问题的是,您只是在执行字符串操作,但不要将这些修改后的键指定为该对象的键。

        2
  •  1
  •   Ritwick Dey    6 年前

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