嵌套Lodash forEach

我有一个相当深的内存数据库,我想,我已经find了最好的代码实现,如果有人有一个更好的方法来做一个双重forEach循环在lodash中,或者如果我用它错了某种方式将是伟大的知道。

物体:

smallDB = { user1:{ permissions:[], locations:[ {ip:'0.0.0.0',messages:[]}, {ip:'',messages:[]} ] }, user2:{ permissions:[], locations:[ {ip:'0.0.0.0',messages:[]}, {ip:'0.0.1.0',messages:[{mid:'a unique id','user':'the sender',message:'the text of the message'}]} ] } } 

发送一条消息我使用:

 ld.forEach smallDB, (a)-> ld.forEach a.locations, (b)-> b.messages.push {mid,user,message} 

我只是想确保这是将消息添加到miniDB中的所有用户以及所有位置的最佳方式

如果使用{mid,user,message}创build的对象是不可变的 {mid,user,message} 可以执行一个非常简单的优化:

 record = {mid,user,message} ld.forEach smallDB, (a)-> ld.forEach a.locations, (b)-> b.messages.push record 

如果你这样做,你可以节省每次推动时创build一个新对象的成本。 为了使用for放弃forEach也会使事情变得更快。

通过允许更直接地访问在您的原始代码中作为b.messages访问的数组,可以进一步优化,但这会使添加和删除用户或位置复杂化。 除非certificate这不是一个过早的优化,否则我认为这是值得的。