我正在使用一个提供给我同步API的外部服务,该API将以json对象的形式返回整个数据,例如:
INIT CALL:
{
elements : [
{
setup : {
id: uniqueID,
version:1,
....
},
attributes : [
attr1: val1,
...
]
},
....
],
removedElements : []
}
或者将从最新同步返回发生的增量变化。
DIFF通话:
{
elements : [
{
setup : {
id: uniqueID,
version:2,
....
},
attributes : [
attr1: val1,
...
]
},
....
],
removedElements : [
{
setup : {
id: uniqueID,
}
},
....
]
}
从我的角度来说,我正在存储第一个调用,以获取整个数据的本地副本(缓存),然后计划使用批处理过程来保持数据更新。
然后,我需要将两个信息合并为一个。 期待最高性能的最佳javascript选项 已合并为INIT CALL数据DIFF CALL传入数据。
由于枢轴在elements [i] .setup.id处为“ id”,所以在讲话之际,我只能看到一个double foreach,如(伪代码):
foreach elementsD in DIFF_CALL:
foreach elementsI, idx in INIT_CALL:
if(elementsD.setup.id==elementsI.setup.id)
INIT_CALL[idx]=elementsD
以及删除的元素:
foreach removed_elementsD in DIFF_CALL:
foreach removed_elementsI, idx in INIT_CALL:
if(removed_elementsD.setup.id==removed_elementsI.setup.id)
delete INIT_CALL[idx]
是否存在任何可以帮助我获得更高性能或更优雅的库方法(例如lodash?)?