在javascript中替换对象数组中的键

在javascript中替换对象数组中的键,javascript,Javascript,我想将对象键中的下划线替换为像USER\u NAME到USER NAME这样的空格。我尝试了以下方法,但不知何故它不起作用 var link = [{ "USER_NAME": "abc", "USER_DOB": "10/25/1985", }, { "USER_NAME": "xyz", "USER_DOB": "10/25/1986" }]; var html = ''; for (var i = 0; i < link.length; i++) { var ta

我想将对象键中的下划线替换为像USER\u NAME到USER NAME这样的空格。我尝试了以下方法,但不知何故它不起作用

var link = [{
  "USER_NAME": "abc",
  "USER_DOB": "10/25/1985",
}, {
  "USER_NAME": "xyz",
  "USER_DOB": "10/25/1986"
}];
var html = '';
for (var i = 0; i < link.length; i++) {
  var tableHeaders = Object.keys(link[i]);

  for (var j = 0; j < tableHeaders.length; j++) {
    var formattedStr = tableHeaders[j].replace(/_/g, ' ');
    Object.keys(link[i])[j] = formattedStr;
    html += Object.keys(link[i])[j] + ' -- ' + formattedStr + '<br /><br />';
  }
}

document.getElementById('test').innerHTML = html;
var-link=[{
“用户名”:“abc”,
“用户地址”:“1985年10月25日”,
}, {
“用户名”:“xyz”,
“用户地址”:“10/25/1986”
}];
var html='';
对于(变量i=0;i
; } } document.getElementById('test')。innerHTML=html;
链接到JS Fiddle-


有人能告诉我我是否遗漏了任何内容吗?

如果我理解正确,您希望更新原始
链接
数组中的对象键

var link = [{
  "USER_NAME": "abc",
  "USER_DOB": "10/25/1985",
}, {
  "USER_NAME": "xyz",
  "USER_DOB": "10/25/1986"
}];
for (var i = 0; i < link.length; i++) {
  var tableHeaders = Object.keys(link[i]);

  // We create a fresh link object that will have formatted keys:
  var newLink = {}; 

  for (var j = 0; j < tableHeaders.length; j++) {
    var badKey = tableHeaders[j];
    var goodKey = badKey.replace(/_/g, ' ');
    newLink[goodKey] = link[i][badKey];
  }

  // Now we replace the original link item with the new one:
  link[i] = newLink; 
}

document.getElementById('test').innerHTML = JSON.stringify(link);
var-link=[{
“用户名”:“abc”,
“用户地址”:“1985年10月25日”,
}, {
“用户名”:“xyz”,
“用户地址”:“10/25/1986”
}];
对于(变量i=0;i

您可以使用此ES6功能在所有对象键上应用替换:

函数替换键(obj、查找、替换){
返回Object.keys(obj).reduce(
(acc,key)=>Object.assign(acc,{[key.replace(find,replace)]:obj[key]},{});
}
//样本数据
变量链接=[{
“用户名”:“abc”,
“用户地址”:“1985年10月25日”,
}, {
“用户名”:“xyz”,
“用户地址”:“10/25/1986”
}];
//替换每个对象中的下划线
link=link.map(obj=>replaceKeys(obj,/g,');
//输出结果

控制台日志(链接)你的小提琴很好用。顺便说一句,你可以做
tableHeaders[j]。替换(''','')
,而不是拆分并重新加入它。@choz不,fiddle不能很好地工作,因为我希望它们都相等并且没有下划线。我想替换只适用于一次事件。如果密钥类似于USER\u NAME\u某物,它将不起作用。你应该看看这个
foo.replace(/\u/g')
@user2080056哦,我明白了,你只是不明白为什么
Object.keys
不引用对象的密钥,因为你通过访问它来替换对象密钥。你的假设是错误的<代码>对象。键
基于对象生成字符串数组,因此当您在
对象.keys
中进行更新时,它只需更新字符串数组即可。如果您想要替换实际对象中的键,我建议使用@pratekgupta链接。