Javascript 从对象中的所有关键帧中删除字符(Lodash确定)

Javascript 从对象中的所有关键帧中删除字符(Lodash确定),javascript,object,lodash,Javascript,Object,Lodash,在这个对象的所有键之前,我有一个令人烦恼的字符长度。因为它们都是相同的,所以我想做一个.map或forEach或是一些带有.slice的东西来删除前n个字符。如何对对象中的所有关键点执行此操作 我应该说,我们已经在该项目中进口了Lodash,所以我可以使用它 所以我需要把这个转过来: { 'remove.this.string.a': "apple", 'remove.this.string.b': "banana", 'remove.this.string.c': "carrot"

在这个对象的所有键之前,我有一个令人烦恼的字符长度。因为它们都是相同的,所以我想做一个.map或forEach或是一些带有.slice的东西来删除前n个字符。如何对对象中的所有关键点执行此操作

我应该说,我们已经在该项目中进口了Lodash,所以我可以使用它

所以我需要把这个转过来:

{
  'remove.this.string.a': "apple",
  'remove.this.string.b': "banana",
  'remove.this.string.c': "carrot",
  'remove.this.string.d': "diakon"
}
并将其转化为:

{
  "a": "apple",
  "b": "banana",
  "c": "carrot",
  "d": "diakon"
}
您可以将新的Object.fromEntries与Object.entries一起使用:

让我们删除={ 这:{ 字符串:{} } } 删除.this.string.a=apple remove.this.string.b=banana 删除.this.string.c=carrot remove.this.string.d=diakon console.logremove.this.string 设fixed=Object.fromEntries Object.entriesremove.this.string .map[key,val]=>[key,val] 控制台。logfixed 设obj={ 'remove.this.string.a':苹果, 'remove.this.string.b':香蕉, 'remove.this.string.c':胡萝卜, 'remove.this.string.d':diakon }; 让transformed=Object.entriesobj.reducet,[键,值]=>{ t[key.substr19]=值; 返回t; }, {};
console.logtransformed 使用object.entries获取键和值。循环切换键

直接更改对象 var obj={ 'remove.this.string.a':苹果, 'remove.this.string.b':香蕉, 'remove.this.string.c':胡萝卜, 'remove.this.string.d':diakon } //Object.entriesobj.foreachFunctionRR{ //var key=arr[0] //var值=arr[1] //删除obj[键] //obj[key.split..pop]=值 // } Object.entriesobj.forEach[键,值]=>{ 删除obj[键] obj[key.split..pop]=值 }
console.logobj避免使用Object.fromEntries的另一种方法是使用Array.reduce,如图所示:

常量输入={ 'remove.this.string.a':苹果, 'remove.this.string.b':香蕉, 'remove.this.string.c':胡萝卜, 'remove.this.string.d':diakon }; 常量输出=Object.entriesinput.reduceresult,[键,值]=>{ /*拔出钥匙串的最后一个字母*/ 常量字母=key.slice-1; /*将字母键/值插入结果对象*/ 返回{…结果,[字母]:值}; }, {};
console.logoutput 如果您已经拥有lodash,\ u0.mapKeys是您正在寻找的。下面是一个示例,说明了您直接要求将字符切分为19个字符,但您可以轻松执行拆分或替换或其他任何您想要的操作:

var=需要“lodash” 让数据={ 'remove.this.string.a':苹果, 'remove.this.string.b':香蕉, 'remove.this.string.c':胡萝卜, 'remove.this.string.d':diakon } _.mapKeysdata,val,key=>key.19 这是一个runkit:

我假设您的对象实际上是有效语法而不是无效语法。这与控制台日志中的情况类似,但当我访问一个值时,当然我必须说objName['remove.this.string.a']。我应该编辑这个问题吗?整个关键是删除字符串。this.string.a。钥匙上有点,不是三层深的物体。我应该在问题的关键部分加引号。很抱歉造成混乱。根据您的评论更新。太好了!这非常有用,因为它使用key.split..pop,它使用分割的最后一个元素,所以如果我试图删除的字符串发生了变化,这仍然有效!谢谢