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

前端之家收集整理的这篇文章主要介绍了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

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

猜你在找的JavaScript相关文章