我有一堆像點分隔字符串進來的對象屬性,例如"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