我正在处理一个现有项目,该项目采用格式奇怪的字符串点表示法获取查询参数。但是它们必须在处理之前转换为对象。目前正在按名称对特定键使用条件来执行此操作。
这如何动态执行?您将在下面找到输入和所需输出的示例。
输入:
{
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句