【发布时间】:2015-03-19 11:00:55
【问题描述】:
我有一堆像"availability_meta.supplier.price" 这样以点分隔的字符串形式出现的对象属性,我需要为record['availability_meta']['supplier']['price'] 等分配一个相应的值。
并非所有事物都是 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,并向其他可以快速解决此问题的库开放。
EDIT这是在后端并且不经常运行,因此没有必要针对大小、速度等进行优化。事实上,代码可读性将是未来开发人员的一个加分项。
EDIT 2 这与引用的副本不同。也就是说,我需要能够为同一个对象多次执行此分配,并且“重复”答案每次都会简单地覆盖子键。请重新打开!
【问题讨论】:
-
1.将其拆分为
.2. 使用for。 3. ?????? 4. 利润!!!111 -
哈,是的,这就是
???????部分 -
Angular 的
$parse在这方面做得很好。也许看看source code -
@tyler 实际上什么都没有 - 你拆分、迭代和分配
-
@zerkms 你能写一个简单的例子吗?我觉得有多个长度的赋值部分很棘手
标签: javascript arrays object lodash