我有一堆像点分隔字符串进来的对象属性,例如"availability_meta.supplier.price"
,我需要为record['availability_meta']['supplier']['price']
等分配相应的值。Javascript:将点分隔字符串转换为嵌套对象值
并非所有事物都是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这是不相同的引用重复。也就是说,我需要能够为同一个对象多次执行此任务,并且每次“重复”答案都会简单地覆盖子键。请重新打开!
1.用'.'分割它。2.使用'for'。 3. ??????? 4.盈利!!!! 111 – zerkms 2015-01-21 02:19:27
哈是的所有关于'???????'部分 – tyler 2015-01-21 02:20:03
Angular的['$ parse'](https://docs.angularjs.org/api/ng/service/ $解析)做得很好。也许看看[源代码](https://github.com/angular/angular.js/blob/master/src/ng/parse.js#L956) – Phil 2015-01-21 02:20:42