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

安德鲁·泰勒

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

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

输入:

{ 
    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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章