我有一个对象,我想将其一些属性名称从 mixedCase
更改为 snake_case
,而不修改原始对象,也无需重新将所有变量名称写两次。这个示例只包含两个变量,但在我的实际代码中,有 10 多个变量,为了将两个 mixedCase
变量放入 snake_case
中而重复这一切感觉很愚蠢:
function do_stuff(data) {
const { totalScore, position } = data;
const params = { total_score: totalScore, position };
return do_more_stuff(params);
}
最佳答案
您可以使用这些功能:
function snakeCase(s) {
return s.replace(/([A-Z])/g, c => '_' + c.toLowerCase());
}
function snakeCaseKeys(obj) {
return Object.keys(obj).reduce( (acc, key) =>
Object.assign(acc, { [snakeCase(key)]: obj[key] }), {} );
}
// Sample use:
const params = snakeCaseKeys({totalScore: 1, position: 2});
console.log(params);
关于javascript - 复制对象的属性而不必重复所有变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40263688/