微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript:将点分隔的字符串转换为嵌套的对象值

我有一堆对象属性以点分隔的字符串形式出现,例如“availability_Meta.supplier.price”,我需要为记录[‘availability_Meta’] [‘供应商’] [‘价格’]分配相应的值,所以上.

并非所有东西都是3级深度:许多只有1级深度,而且许多深度超过3级.

有没有一种很好的方法Javascript中以编程方式分配?例如,我需要:

["foo.bar.baz",1]  // --> record.foo.bar.baz = 1
["qux.qaz","abc"]  // --> record.qux.qaz = "abc"
["foshizzle",200]  // --> record.foshizzle = 200

我想我可以一起破解某些东西,但我没有任何好的算法,所以会很感激建议.我正在使用lodash,如果它有用,并对其他可以快速完成此工作的库开放.

编辑它在后端并且不经常运行,因此没有必要优化大小,速度等.实际上代码可读性对于未来的开发者来说将是一个加分.

编辑2这与引用的副本不同.也就是说,我需要能够为同一个对象多次执行此分配,并且“重复”答案将每次只覆盖子键.请重新开启!

解决方法

你在问题中提到了lodash,所以我想我应该添加他们的简单对象set()和get()函数.做一些像:
_.set(record,'availability_Meta.supplier.price',99);

你可以在这里阅读更多相关信息:https://lodash.com/docs#set

这些函数也可以让你做更复杂的事情,比如指定数组索引等:)

原文地址:https://www.jb51.cc/js/156567.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐