嵌套对象的默认值

2023-12-08

假设我有以下提供默认值的对象:

default_values = {a: 0, b: 0, c: {aa: 0, bb: 0}}

我还有另一个对象可以覆盖其中一些默认值:

override_values = {a: 5, c: {aa: 5}}

我想要的是将这两个对象结合起来,从而产生

combined: {a: 5, b: 0, c: {aa: 5, bb: 0}}

但是,使用常规展开运算符,如{...default_values, ...override_values}只会给c: {aa: 5}代替c: {aa: 5, bb: 0}。该对象可能很大,因此我无法对所有嵌套对象进行硬编码。

我可以编写一个函数来基本上遍历每个键...如果该值不是对象,则使用override | default,否则在嵌套对象上递归调用此函数。但我觉得这种情况很常见,已经有这样的事情了。


您正在寻找类似于 deep_merge 或 merge 的东西。 这些功能广泛存在于lodash图书馆。

这是一个例子:-

function merge(target, source) {
  Object.keys(source).forEach(key => {
    const sourceValue = source[key];
    if (sourceValue) {
      const targetValue = target[key];
      const newValues = merge(targetValue, sourceValue);
      Object.assign(sourceValue, newValues);
    }
  });

  Object.assign(target || {}, source);
  return target;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套对象的默认值 的相关文章

  • dojo dijit.form.DateTextBox 约束不起作用,datetextbox

    嗨 我是 javascript 和 dojo 的新手 我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围 一旦选择了开始日期或结束日期 我想限制可用的日期 以便不可能选择按时间顺序排列在开始日期
  • Android 设备上的 PhoneGap 蓝牙插件

    我一直在尝试让 PhoneGap 工作的蓝牙插件 但我似乎不知道哪里出了问题 首先 我的测试设备是 Galaxy S3 GT 19305T 应用程序是使用PhoneGap CLI http docs phonegap com en 3 0
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中

随机推荐

  • ProcessBuilder 找不到指定的文件,而 Process 可以[重复]

    这个问题在这里已经有答案了 我正在尝试从 Java 程序运行 jar 文件 并且使用成功getRuntime Process processAlgo Runtime getRuntime exec java jar algoPath 但是当
  • Google 图表错误:b.L 不是函数

    我使用 Google API 制作了一个包含 3 个图形的小页面 一切都很完美 然而 从一个时刻到另一个时刻都崩溃了 在图表中出现此消息的地方 bL 不是函数 有人可以向我解释为什么会发生这种情况吗 我的例子working
  • WPF XAML StringFormat:C# 4.0 中的文化解决方法被破坏?

    周围的工作 FrameworkElement LanguageProperty OverrideMetadata typeof FrameworkElement new FrameworkPropertyMetadata XmlLangua
  • 使用 Jersey 2 (HK2) DI 注册 Dropwizard 配置

    在我的 Dropwizard 1 2 4 应用程序中 我无法将 Dropwizard 配置注入到由 HK2 实例化的类中 实现这一目标的最佳方法是什么 只需绑定配置即可instance Override public void run fi
  • 我可以信任 Java SecurityManager 沙箱吗?

    我正在编写一个 JavaFX2 应用程序 它接受从远程位置加载的任意代码 对我来说 使用自定义 SecurityManager ClassLoader 和 ProtectionDomain 是最佳选择 不幸的是 这似乎与用于沙箱小程序的设置
  • 手动指定特定链接符号的重新映射

    在不修改这两个源文件的情况下 有没有办法获取编译它们生成的目标文件 并说服链接器链接foo在 main v1 c 中bar在bar c main v1 c void foo void int main void foo bar c incl
  • JavaScript 是多线程的吗?

    这是我的问题 我需要使用 jQuery getScript 动态下载多个脚本并执行某些JavaScript加载所有脚本后的代码 所以我的计划是做这样的事情 function GetScripts scripts callback var l
  • Python 和 C++ 模数

    我正在学习 C 在尝试编写一个小程序时 我发现了一些奇怪的东西 这是关于模数 C 代码 cout lt lt 325 325 100 lt lt endl 300 cout lt lt 325 325 100 300 和Python代码 p
  • 关于泛型方法调用的 Java 类型提示

    我想知道调用具有如下签名的静态方法的正确方法是什么 public static
  • 如何获取单选按钮的文本(而不是值)

    我知道我可以获取单选按钮的 值 属性 但我发现获取单选按钮的文本非常困难 考虑下面的例子 它有 3 个单选按钮 并尝试提醒第一个单选按钮的值 红色 然后尝试提醒单选按钮的文本 苹果 但失败了 获取几乎任何元素的文本都可以使用 elem ch
  • 正则表达式在文件夹中查找文件

    如何查找文件夹中与正则表达式模式匹配的所有文件 Thanks The GetFiles方法允许您指定通配符模式 但不是真正的正则表达式 另一种可能性是简单地循环遍历文件并根据正则表达式验证它们的名称 IEnumerable
  • 将图像大小调整到给定边界区域的最简单方法是什么?

    我想创建一个函数 例如 def generateThumbnail self width height Generates thumbnails for an image im Image open self file im thumbna
  • MYSQLi 错误:用户已经拥有超过“max_user_connections”的活动连接[重复]

    这个问题在这里已经有答案了 我正在运行的网站上出现以下错误 我不明白为什么会这样 因为它在我的本地主机上运行良好 跟楼主有关系吗 我在 Unix 服务器上 Warning mysqli mysqli mysqli mysqli 42000
  • NodeJS 将 Int16Array 二进制缓冲区转换为 Google Speech API 的 LINEAR16 编码原始流

    我正在尝试在节点服务器中将语音转换为文本 其中使用 AudioContext 在浏览器中进行语音录制 我能够通过binaryType arraybuffer的WebSocket连接将int16Array缓冲区 记录的数据 发送到我的节点服务
  • 从列号获取 Excel 样式的列名称

    这是在提供行和列 ID 时提供列名称的 代码 但当我给出如下值时row 1 and col 104 它应该返回CZ 但它返回D row 1 col 104 div col column label str while div div mod
  • 如何从左到右移动uiview,反之亦然

    您好 我正在开发一个应用程序 我为一个视图制作了从左到右 从右到左移动的动画 并更改该视图中包含的标签的值 但是当我单击左或右按钮时 该视图将被删除新视图覆盖旧视图 所以我不想覆盖 只是我想添加新视图 我的代码是 void centerAn
  • 文本文件的行数

    我正在尝试创建一个函数 它接受文件名 即 data txt 并生成该文件的行数 data txt 24 42 45 54 67 76 89 98 12 21 99 99 33 33 下面的代码是我尝试构建一个函数 该函数接受文件名 data
  • mongoose 和 mongoJS 有什么区别?我应该使用哪个?

    我只是想知道 mongoose 和 mongoJS 有什么区别 那么 如果我们使用 mongoose 或 mongoJS 有何优点和缺点 因为我们知道连接 NodeJS 和 MongoDB 有很多依赖关系 例如猫鼬和 mongoJS Mon
  • 如何从 HTML 文件中提取元标签并在 SOLR 和 TIKA 中对其进行索引

    我正在尝试提取 HTML 文件的元标签 并通过 tika 集成将它们索引到 solr 中 我无法使用 Tika 提取这些元标记 也无法在 solr 中显示 我的 HTML 文件看起来像这样
  • 嵌套对象的默认值

    假设我有以下提供默认值的对象 default values a 0 b 0 c aa 0 bb 0 我还有另一个对象可以覆盖其中一些默认值 override values a 5 c aa 5 我想要的是将这两个对象结合起来 从而产生 co