javascript - 将字符串点表示法转换为 javascript 对象
问题描述
我正在开发一个现有项目,该项目采用格式奇特的字符串点表示法获取查询参数。但它们必须在处理之前转换为对象。这目前正在通过名称对特定键的条件执行。
如何动态执行?您将在下面找到输入和所需输出的示例。
输入:
{
date.gte: '2019-01-01',
date.lt: '2020-01-01'
}
输出:
{
date: {
gte: '2019-01-01',
lt: '2020-01-01'
}
}
解决方案
您可以使用reduce
和split
方法将每个键拆分为数组并基于该数组构建嵌套结构。
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)
推荐阅读
- sql-server - ETL(提取转换负载)与用于处理事实表数据的存储过程
- php - Woocommerce 产品类别帖子的 ACF 关系字段
- kotlin - 为什么我在 Kotlin 中使用 delay() 或 yield() 时不能并行操作?
- c++ - Visual Studio 2017 中的 Loudicrouz.J 病毒
- swift - 未从 @IBDesignable 类调用 UIView 的 addGestureRecognizer
- css - 如何剪辑框中多余的图像 - CSS
- angular - RXJS/Angular 替换 Observable
- django - 如何在 Django 3.0.4 中上传文件的进度条
- file - Lambda 松弛文件上传被多次触发
- r - 使用 r 中的分类变量创建折线图