我正在开发一个现有项目,该项目采用奇怪格式的字符串点表示法获取查询参数。但在处理之前必须将它们转换为对象。目前,这是通过名称对特定键的条件来执行的。
如何动态执行此操作?您将在下面找到输入和所需输出的示例。
输入:
{
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)
关于javascript - 将字符串点符号转换为 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59381054/