我有一个相当深的内存数据库,我认为,我找到了代码的最佳实现,如果有人有更好的方法在lodash中执行双重forEach循环,或者如果我错误地使用它会很高兴知道。
对象:
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}
我只是想确保这是为smallDB及其所有位置的所有用户添加消息到迷你数据库的最佳方式
答案 0 :(得分:1)
您可以执行一项非常简单的优化如果您使用{mid,user,message}
创建的对象不可变:
record = {mid,user,message}
ld.forEach smallDB, (a)->
ld.forEach a.locations, (b)->
b.messages.push record
如果这样做,每次推送时都可以节省创建新对象的成本。删除forEach
以支持使用for
也会使事情变得更快。
通过允许更直接地访问您在原始代码中以b.messages
访问的阵列,可以进一步优化,但这会使添加和删除用户或位置变得复杂。除非通过分析证明不过早优化,否则我认为不值得。