Javascript - 将 INI 文件解析为嵌套关联数组

2024-01-16

我是 Javascript 新手,在将 INI 格式的文件解析为嵌套对象时遇到问题。

我的文件格式如下:

ford.car.focus.transmission=standard
ford.car.focus.engine=four-cylinder
ford.car.focus.fuel=gas

ford.car.taurus.transmission=automatic
ford.car.taurus.engine=V-8
ford.car.taurus.fuel=diesel

purchased=Ford Taurus

我希望结构如下所示:

{ ford:
  { car:
    { focus:
      {
        transmission: 'standard',
        engine: 'four-cylinder',
        fuel: 'gas'
      }
    }
    { taurus:
      {
        transmission: 'automatic',
        engine: 'V-8',
        fuel: 'diesel'
      }
    }
  }
  purchased: 'Ford Taurus'
}

我将文件按行存储在数组中,按“\n”分割。我正在尝试编写一个在循环中调用的方法,传递我的全局对象,如下所示:

var hash = {};
var array = fileData.toString().split("\n");
for (i in array) {
  var tmp = array[i].split("=");
  createNestedObjects(tmp[0], tmp[1], hash);
}

这应该让我可以访问哈希对象中的值,例如:

hash.ford.car.focus.fuel
# 'gas'

hash.purchase
# 'Ford Taurus'

我已经尝试过类似这里建议的方法:Javascript:如何使用数组给出的对象名称动态创建嵌套对象 https://stackoverflow.com/questions/5484673/javascript-how-to-dynamically-create-nested-objects-using-object-names-given-by,但它似乎只设置了嵌套中的最后一个项目。

{ fuel: 'diesel',
  purchased: 'Ford Taurus' }

我不成功的尝试如下所示:

createNestedObjects(path, value, obj) {
  var keys = path.split('.');
  keys.reduce(function(o, k) {
    if (k == keys[keys.length-1]) {
      return o[k] = value;
    } else {
      return o[k] = {};
    }
  }, obj);
}

但是,它只会返回嵌套值的最后一个值:

{ ford: { car: { taurus: { fuel: 'diesel' } } },
  purchased: 'Ford Taurus' }

该函数需要在分配中间键之前检查中间键是否已经存在。

createNestedObjects(path, value, obj) {
  var keys = path.split('.');
  keys.reduce(function(o, k) {
    if (k == keys[keys.length-1]) {
      return o[k] = value;
    } else if (o[k]) {
      return o[k];
    } else {
      return o[k] = {};
    }
  }, obj);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript - 将 INI 文件解析为嵌套关联数组 的相关文章

  • 由于 apollo-client 未定义,无法解构 GraphQL 查询?

    我正在寻找调试与错误消息相关的问题 未捕获的类型错误 无法解构 0 apollo client WEBPACK IMPORTED MODULE 4 useQuery 因为它未定义 Context 我正在为我的 React js 项目设置后端
  • Chart.js 在初始化时设置活动段

    我正在使用 Chart js v2 并且尝试在加载图表时模拟圆环图上某个段的 悬停状态 因此看起来有一个部分已突出显示 我已经搜索和梳理了代码一天 但找不到一个好的方法来做到这一点 提前致谢 设置片段的悬停样式有点令人困惑 因为它没有真正记
  • 在 contenteditable div 中选择范围

    我有一个contenteditablediv 和其中的一些段落 这是我的代码 div style border solid 1px black width 300px height 300px div Hello world div div
  • 使用 JavaScript 禁用第三方 cookie

    我正在努力根据所有在欧盟运营的公司的数据保护规则实施新的 Cookie 政策合规性 根据该规则 用户在使用任何网站时必须能够拒绝 接受除必需的 Cookie 之外的所有内容 在我客户的网站中 我可以看到正在存储以下第三方 cookie ga
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐

  • Dapper 和 SQL 注入

    Dapper 如何帮助防止 SQL 注入 我正在测试不同的 DAL 技术 必须选择一种来确保我们网站的安全 我倾向于 Dapper http code google com p dapper dot net 但需要一些帮助来了解安全性 Da
  • 替换 javascript 中的 JSON 键

    假设我有一个 JSON 对象 例如 var myjson com mycompany top Element com mycompany top count 10 com mycompany top size 0 我想用冒号替换键中的点 句
  • F3 更改 css 文件的相对 URi

    我是一个尝试 F3 的新手 我的示例应用程序基本上可以工作 但是对 css 文件的引用发生了更改并导致找不到 它看起来像 htaccess 问题 但我似乎无法修复它 我的 css 文件指定为 我的 htaccess 文件看起来像 Rewri
  • 为什么 UITextView 在调整大小后会在错误的框架中绘制文本?

    我陷入了某种魔力 当我尝试更改 UITextView 框架 在本例中使用 UISlider 时 文本会在比框架更小的其他区域中绘制 多次调整大小 有趣的是 如果我们在尝试使框架变大时滑动得足够快 文本就会绘制在非常正确的区域中 有人可以解释
  • 动态大小类型总是在堆上吗?

    我对 Rust 的学习让我了解了动态大小类型 DST 并且我知道这些类型的大小在编译时无法得知 例如 str 我现在的问题是 我说 DST 永远不能存在于堆栈上 它们只存在于堆上 这样说对吗 另外 另一方面 说大小类型可以存在于堆栈中是否正
  • GridView 排序仅有效一次

    我有一个网格 它仅按升序排序一次 然后什么也没有发生 aspx文件代码
  • 如何在 Swift 4 中创建一定大小的数组?

    如何制作一个包含 1000 个浮点数的简单数组 我已经尝试过这个 var computeArray Array
  • 如何从node.js缓冲区获取int

    是代码 var time new Buffer 506BF1E3 hex time toString Pk 0x506BF1E3 1349251555 UNIX时间 如何获取 1349251555 表格time缓冲 这个也能达到目的 通过使
  • SQL Server:过滤 sp_who2 的输出

    在SQL Server下 有没有一种简单的方法来过滤sp who2的输出 例如 假设我只想显示某个数据库的行 你可以尝试类似的东西 DECLARE Table TABLE SPID INT Status VARCHAR MAX LOGIN
  • 如何检查使用哪个编译器来构建Python

    有没有办法知道使用哪个编译器来构建Python安装在特定的linux机器上 我尝试使用ldd on the Python动态库 1 但我无法理解它是否是用gcc或英特尔编译器 1 ldd libpython2 7 so 1 0 linux
  • Clang 在 c++98 模式下使用 std::stoi 编译代码

    我需要用 C 98 编译我的 cpp 而不是我的学校项目的 C 11 所以我用了 std c 98编译 CPPFLAGS Wall Werror Wextra std c 98 但我犯了一个错误并使用了C 11std stoi功能 i st
  • 如何让浮动div居中?

    我想将下面模型中出现的三个 div 居中 全部都有 float left 这可能吗 我不介意有包装器div Text align center 和 display inline block 不适用于我的代码 如果你想让它们居中 你就不能浮动
  • 发布时母版页出现“无法加载类型”错误

    本地查找一切正常 但是当我将 ASP NET 应用程序发布到远程服务器时 出现以下错误 Server Error in Application Parser Error Description An error occurred durin
  • 页面加载时的 JSF 重定向

    简短的问题 是否可以进行重定向 例如当用户未登录时 当呈现页面时 为此你should http java sun com products servlet Filters html use a Filter http java sun co
  • 如何用颜色突出显示浏览器选项卡

    我有一个聊天 Web 应用程序 我需要一项功能 其中如果特定用户在浏览器窗口中打开了多个选项卡 并且聊天选项卡不是活动选项卡 那么如果他从另一端收到 ping 则聊天选项卡应该自动突出显示以吸引用户注意力 我打算用 jQuery 来做这件事
  • 高调的 MonoTouch 应用程序? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想要一些使用 MonoTouch 创建的高调应用程序的示例 您打电话回家的应用程序 进入所属类别前 25 名的应用程序 我在哪里可以找到此类应用程序
  • 如何在 Debian postinst 脚本中获取新安装的版本?

    Per the Debian 政策手册 http www debian org doc debian policy ch maintainerscripts html 我的 postinst 脚本在升级和配置时被调用 如 postinst
  • Hibernate Validator - 添加动态 ConstraintValidator

    了解后Hibernate 自定义验证器 https docs jboss org hibernate validator 4 0 1 reference en html validator customconstraints html 它让
  • 无法使用 GAE/J DataNucleus 插件版本 2.1.2 获取新创建的 JDO 持久实体的 ID

    我的问题 我正在使用新的 1 7 5 GAE J SDK 将我的应用程序从 GAE J 的 DataNucleus 插件版本 1 x 移植到 2 0 这将我的 JDO 版本从 2 3 更改为 3 0 1 我的持久实体类有一个编码字符串类型的
  • Javascript - 将 INI 文件解析为嵌套关联数组

    我是 Javascript 新手 在将 INI 格式的文件解析为嵌套对象时遇到问题 我的文件格式如下 ford car focus transmission standard ford car focus engine four cylin