javascript - 将字符串点符号转换为 JavaScript 对象

标签 javascript node.js object formatting

我正在开发一个现有项目,该项目采用奇怪格式的字符串点表示法获取查询参数。但在处理之前必须将它们转换为对象。目前,这是通过名称对特定键的条件来执行的。

如何动态执行此操作?您将在下面找到输入和所需输出的示例。

输入:

{ 
    date.gte: '2019-01-01', 
    date.lt: '2020-01-01' 
}

输出:

{
    date: {
        gte: '2019-01-01',
        lt: '2020-01-01'
    }
}

最佳答案

您可以使用 reducesplit 方法将每个键拆分为数组,并基于该数组构建嵌套结构。

const data = {
  'date.gte': '2019-01-01',
  'date.lt': '2020-01-01'
}

const result = Object.entries(data).reduce((r, [k, v]) => {
  k.split('.').reduce((a, e, i, ar) => {
    return a[e] || (a[e] = ar[i + 1] ? {} : v)
  }, r)

  return r;
}, {})

console.log(result)

关于javascript - 将字符串点符号转换为 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59381054/

相关文章:

javascript - 比较 2 个 JavaScript 对象并根据条件移动数据

javascript - 查询对象图?

javascript - 我如何在我的客户端 javascript 中需要一个 Node 模块?

javascript - Angular 5双向绑定(bind)更新另一个字段

javascript - 根据表单输入更改 html 内容

node.js - 使用唯一 id 选择数组元素在 mongodb 中不起作用

Node.js 服务器和 Cognito 同步

javascript - CoffeeScript 返回函数内的函数

javascript - 简单的实时网络应用程序用作 'voting terminal'

c - 在 c 中编写 oo Lua 接口(interface)的最佳方法?