javascript - 复制对象的属性而不必重复所有变量名称?

标签 javascript

我有一个对象,我想将其一些属性名称从 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/

相关文章:

javascript - php 表单 html 按钮

javascript - 电子查找器问题。尝试复制文件时未定义不是函数错误

javascript - 加载一次 HTML 对象并多次使用

javascript - 在 PHP 文件中实现 JavaScript (WordPress)

javascript - 使用 Web Audio API 获取音频标记/提示点

javascript - Javascript try catch 范围问题

javascript - 如何在 Featherlight 灯箱中获取当前幻灯片和总幻灯片?

javascript - 如何在 for 循环中访问 i 的当前数量?

javascript - 条件语句不响应结果

javascript - 设置 d3.geoPath() 的投影不按记录工作