将对象的孙属性复制到新创建的对象,而无需太多代码
Copy object's grandchild property to a newly created object without much code
有没有办法以更有效的方式执行以下操作?
(我使用咖啡脚本,所以也许还有一个特定于咖啡脚本的解决方案?..)
oldObj =
parent:
child:
grandchild: "I'm a grandchild!"
newObj =
parent:
child:
grandchild: null
newObj.parent.child.grandchild = oldObj.parent.child.grandchild
我不能简单地做newObj.parent = oldObj.parent
因为oldObj.parent
可能包含anotherChild
和yetAnotherChild
等等——我不知道它还包含什么(也不想知道),我只需要child
.
您可以创建一个通用递归函数来向对象添加属性
oldObj =
parent:
child:
grandchild: "I'm a grandchild!"
addPropertyToObject = (obj, property, valueProperty) ->
if typeof property == 'string'
property = property.split(".")
obj[property[0]] = obj[property[0]] || {}
tmpObj = obj[property[0]]
if property.length > 1
property.shift()
addPropertyToObject tmpObj, property, valueProperty
else
obj[property[0]] = valueProperty
obj
newObj = addPropertyToObject {}, "parent.child.grandchild", oldObj.parent.child.grandchild
Lodash为此提供了set()
和get()
函数;它们甚至支持对象键中的数组。
相关文章:
- 一个html元素的克隆次数太多
- getSript在同一对象上多次添加处理程序
- 更新嵌套对象的多个字段
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- 使用.slice分页选择了太多项目
- 堆排序实现进行了太多比较
- 如何在不每秒调用太多次的情况下通过Soundcloud解析api进行循环
- 如何修复“;太多递归”;ReactJS中的错误
- 为什么fs.readFile在windows上花费太多时间
- 如何避免webGL着色器加载给cpu带来太多负载
- node.js 需要太多的 TCP 套接字
- JavaScript循环迭代太多
- 函数崩溃,因为太多迭代jQuery
- 为什么我的javascript .push方法添加了太多对象
- 将对象的孙属性复制到新创建的对象,而无需太多代码
- js对象中的属性太多
- JavaScript在每帧不工作的对象中添加太多的变量
- 对象文字表示法getter和setter:太多递归
- 包含函数的对象中参数太多反模式
- 当在Javascript中创建太多音频对象时,浏览器会崩溃