【发布时间】:2020-11-04 20:46:58
【问题描述】:
我正在使用Zod 来验证我的申请表的输入,当发生验证错误时,我会收到一个errors 数组,其中包含message 属性和path 属性。
我需要将收到的path 属性转换为string 对象路径,以便我可以使用它为React Final Form 创建一个ValidationError。
给定path:
["user", "name"]
["company", 0, "name"]
预期的string 对象路径:
"user.name"
"company[0].name"
令人惊讶的是,我在 Stack Overflow、Google 搜索或 NPM 上没有找到任何实现此功能的代码 :)
【问题讨论】:
-
似乎一个非常简单的循环可以工作。跳过第一个值;如果当前值为字符串,则添加
.并附加当前值。如果当前值为数字,则添加[、当前值和]。继续遍历数组。 -
如果您将它们转换为
user['name']和company['0']['name']会容易得多 - 更少(没有)需要处理的边缘情况。 -
是的,我会担心这里有更多的边缘情况。任何字符串都可以是属性键,即使是无效的 JS 标识符。
-
@jcalz 很抱歉直接对你发表评论,但我想你可能有兴趣看到stackoverflow.com/q/64676046/251311
标签: javascript typescript react-final-form zod