按命名空间转换对象

2023-12-02

我需要像这样转换“平面对象”(输入数据):

{
   'prop1': 'value.1',
   'prop2-subprop1': 'value.2.1',
   'prop2-subprop2': 'value.2.2',
}

像这样的沉浸对象(输出数据):

{
   'prop1': 'value.1',
   'prop2': {
      'subprop1': 'value.2.1',
      'subprop2': 'value.2.2'
   }
}

当然,解决方案必须为无限制的深度做好准备。

我的解决方案不起作用:

var inputData = {
   'prop1': 'value.1',
   'prop2-subprop1': 'value.2.1',
   'prop2-subprop2': 'value.2.2',
};    

function getImmersionObj(input, value) {
   var output = {};

   if ($.type(input) === 'object') { // first start
      $.each(input, function (prop, val) {
         output = getImmersionObj(prop.split('-'), val);
      });
   } else if ($.type(input) === 'array') { // recursion start
      $.each(input, function (idx, prop) {
         output[prop] = output[prop] || {};
         output = output[prop];
      });
   }

   return output;
}

console.log(getImmersionObj(inputData)); // return empty object

你能帮我找到我的代码中的问题吗?或者你知道另一种更好的转换算法,就像我的一样?


您可以使用函数来分割值的路径并为其生成新对象。

function setValue(object, path, value) {
    var way = path.split('-'),
        last = way.pop();

    way.reduce(function (o, k) {
        return o[k] = o[k] || {};
    }, object)[last] = value;
}

var object = { 'prop1': 'value.1', 'prop2-subprop1': 'value.2.1', 'prop2-subprop2': 'value.2.2' };

Object.keys(object).forEach(function (key) {
    if (key.indexOf('-') !== -1) {
        setValue(object, key, object[key]);
        delete object[key];
    }
});

console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按命名空间转换对象 的相关文章

  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • jQuery,REAL:不是等价的运算符?

    此代码行选择任何类名不是 id 和 quantity 的 div 内的所有子输入 div item gt div not id quantity gt input live keydown function event 执行相反操作的代码行
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • 如何通过jquery更改元素的类名

    div class bestAnswerControl div class IsBestAnswer div div 我想补充一下 bestanswer some attribute 我想更换class IsBestAnswer div 到
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • C# 计算距离指定时间跨度还有多长时间

    所以我试图计算距离某个特定时间还有多长时间 但我似乎无法让它发挥作用 举个例子 我想计算从现在到早上 06 00 00 需要多长时间所以说现在是晚上 10 30 我想看看到第二天早上 6 点还有多长时间 所以正确答案是 7 小时 30 分钟
  • 关于在 FreeBSD 中编写自己的系统调用的问题

    好的 我刚刚读完 FreeBSD 的 Kill 2 的实现 并尝试编写我自己的 kill 这个系统调用需要uid and signum并将信号发送到 uid 拥有的进程 不包括调用进程 我怎样才能通过uid到系统调用 在kill 2 中 p
  • 在 ColdFusion 中隐藏/加密 URL 变量

    如果我有一个网站并且 URL 是www example com mainpage cfm id 0123 app 2 我怎样才能隐藏id 0123 and app 2那么用户将无法更改这些变量 我正在查看一个由我之前的人编写的复杂程序 他通
  • 合并两个日期返回二进制?

    为什么COALESCE date1 date2 return Blob 二进制 两列都是类型DATETIME 完整的sql查询如下 SELECT COALESCE last modified date purchased As LastMo
  • 如何从数组中删除仅包含空格的元素?

    如何删除仅包含空格的数组的所有元素 not元素中的空白 例如 foobar 但只是空数组元素 例如 Thanks preg grep 是你的朋友 array array This is a test array preg grep s z
  • C++中结构体成员变量的初始化

    我有一个带有一些双值的结构 struct A double a double b 如果我创建一个新结构 例如A a 是所有成员 例如a a 在 C 中自动初始化为零 默认情况下不是 除非它是静态存储的变量 即static或全局变量 有几种方
  • 使用 jQuery.ajax 发送 multipart/formdata

    我在使用 jQuery ajax 函数将文件发送到服务器端 PHP 脚本时遇到问题 可以通过以下方式获取文件列表 fileinput attr files 但是如何将这些数据发送到服务器呢 得到的数组 POST 在服务器端 php 脚本是
  • Scala:Spark SQL to_date(unix_timestamp) 返回 NULL

    Spark Version spark 2 0 1 bin hadoop2 7 Scala 2 11 8 我正在将原始 csv 加载到 DataFrame 中 在csv中 虽然该列支持日期格式 但它们被写为20161025而不是2016 1
  • Android 网页视图

    参考这个WebView教程 特别是这个方法 private void setupWebView String MAP URL http gmaps samples googlecode com svn trunk articles andr
  • 为什么 vbs 能够找到 INSTALLLOCATION,而使用 DTF 和 MSI API 的 C# 却找不到?

    VBS 按我的预期工作 但是使用 C 的 COM API 和 DTF 都无法找到 InstallLocation 以下是我到目前为止所做的事情 谢谢这个帖子 我能够使用 vbs 找到注册表上不可用的 InstallLocation 我知道
  • 如何使用路径列表创建层次结构?

    我正在使用 Dropbox 的 Delta API 当我调用 delta 方法时 我会得到自上次调用以来更改的路径列表 photos public photos sample album photos sample album boston
  • docker 容器中的 Firebase 身份验证模拟器 UI 无法在本地主机上运行

    我有这个泊坞窗文件 FROM node 16 ADD src WORKDIR src Install OpenJDK 11 RUN echo deb http ftp debian org debian stretch backports
  • 在进行 w.r.t. 评估时,是否应将数据批次移至 CPU 并(从 torch Tensor)转换为 numpy 数组?训练期间的指标?

    我正在经历Andrew Ng 在 CS230 斯坦福课程中的教程 并在训练的每个时期 通过计算指标来进行评估 但在计算指标之前 他们将批次发送到 CPU 并将其转换为 numpy 数组 代码在这里 extract data from tor
  • 如何将Hibernate和Solr集成在一起?

    对于使用 Hibernate 来管理对象持久性的人们来说 Hibernate 搜索是真正的救星 在尝试开发类似的功能 收集所有对象更改并在事务提交时将它们发送到全文搜索引擎 之后 您很快就会发现其中存在很多陷阱 另一方面 Solr 有其自身
  • 多个测试的单元测试设置/拆卸

    是否有在测试场景开始 结束时触发的函数 函数setUp和tearDown在每次测试之前 之后被触发 我通常想要这样的 class TestSequenceFunctions unittest TestCase def setUpScenar
  • 在 Visual Studio 设计器中公开枚举(标志)集合

    我有一个可能在 NET Forms 控件中显示的数据类型的枚举 我想为控件的使用者提供一个接口来过滤某些类型 设置一些标志 位字段似乎是执行此操作的逻辑方法 不幸的是 枚举从 0 而不是 1 0 1 2 4 8 开始 并且无法更改 如何公开
  • 未提供 Django Rest Framework 身份验证凭据

    我在用着django rest auth with django all auth关于 DRF 和 Angularjs 对于任何有关身份验证的请求 我收到以下错误 detail Authentication credentials were
  • 如何加快sheet中数据的搜索速度

    我有超过 1000000 条记录如何在工作表中加快搜索速度 我一般搜索20s如何提高 表格包括20列和10000条记录 var ss SpreadsheetApp openByUrl urldb var ws ss getSheetByNa
  • 带有微调器的可编辑文本视图 android

    我想在 android 中创建一个控件 用户可以通过键盘输入或通过下拉列表 微调器 输入 实际上 我在微调器的数组中硬编码的值并不详尽 因此用户也应该可以选择通过虚拟键盘输入 那么用户可以通过键盘输入或从列表中选择吗 我怎样才能在andro
  • 按命名空间转换对象

    我需要像这样转换 平面对象 输入数据 prop1 value 1 prop2 subprop1 value 2 1 prop2 subprop2 value 2 2 像这样的沉浸对象 输出数据 prop1 value 1 prop2 sub