Javascript 复制对象';s属性而不必重复所有变量名?

Javascript 复制对象';s属性而不必重复所有变量名?,javascript,Javascript,我有一个对象,我想将它的一些属性名称从mixedCase更改为snake\u case,而不必修改原始对象,也不必重新写入所有变量名称两次。这个例子只包含两个变量,但在我的真实代码中有10多个变量,重复这一切只是为了将两个mixedCase变量放入snake\u case,感觉很愚蠢: function do_stuff(data) { const { totalScore, position } = data; const params = { total_score: totalSc

我有一个对象,我想将它的一些属性名称从
mixedCase
更改为
snake\u case
,而不必修改原始对象,也不必重新写入所有变量名称两次。这个例子只包含两个变量,但在我的真实代码中有10多个变量,重复这一切只是为了将两个
mixedCase
变量放入
snake\u case
,感觉很愚蠢:

function do_stuff(data) {
  const { totalScore, position } = data;
  const params = { total_score: totalScore, position };
  return do_more_stuff(params);
}

您可以使用以下功能:

功能蛇壳{
返回s.replace(/([A-Z])/g,c=>''+c.toLowerCase());
}
功能snakeCaseKeys(obj){
返回Object.keys(obj).reduce((acc,key)=>
赋值(acc,{[snakeCase(key)]:obj[key]},{});
}
//样本使用:
const params=snakeCaseKeys({totalScore:1,position:2});

控制台日志(params)您可以使用以下功能:

功能蛇壳{
返回s.replace(/([A-Z])/g,c=>''+c.toLowerCase());
}
功能snakeCaseKeys(obj){
返回Object.keys(obj).reduce((acc,key)=>
赋值(acc,{[snakeCase(key)]:obj[key]},{});
}
//样本使用:
const params=snakeCaseKeys({totalScore:1,position:2});

控制台日志(params)对于变量和函数来说,这似乎是一个简单的例子。你想要什么?您可以根据需要调用变量和函数。有什么问题吗?我认为这应该关闭,因为我希望合并两个
const
行,而不必两次写入所有变量名。这种观点是如何建立在@MarcosPérezGudeSure,第一行是不必要的。只需执行
constparams={total_score:data.totalScore,position:data.position}假设我正确理解了这个问题。我仍然在两次编写所有变量名@Amy我知道我将不得不两次将mixedCase写入snake_case变量,但我有10多个变量,它们的名称不会改变,我宁愿不写两次,因为我不知道如何缩短它们。可能
data.total_score=data.totalScore;删除data.totalScore?但这不再等同于示例代码。它是在修改现有的对象,而不是创建一个新的对象。你想要什么?您可以根据需要调用变量和函数。有什么问题吗?我认为这应该关闭,因为我希望合并两个
const
行,而不必两次写入所有变量名。这种观点是如何建立在@MarcosPérezGudeSure,第一行是不必要的。只需执行
constparams={total_score:data.totalScore,position:data.position}假设我正确理解了这个问题。我仍然在两次编写所有变量名@Amy我知道我将不得不两次将mixedCase写入snake_case变量,但我有10多个变量,它们的名称不会改变,我宁愿不写两次,因为我不知道如何缩短它们。可能
data.total_score=data.totalScore;删除data.totalScore?但这不再等同于示例代码。它修改现有对象而不是创建新对象。或者
返回object.assign({},…object.keys(obj.map(key=>({[snakeCase(key)]:obj[key]}))。我似乎记得我以前回答时的一条评论,几乎是一样的;-)当然,没错,@torazaburo!或者
返回Object.assign({},…Object.keys(obj.map)(key=>({[snakeCase(key)]:obj[key]}))。我似乎记得我以前回答时的一条评论,几乎是一样的;-)当然,没错,@torazaburo!