我以包含嵌套对象(〜34,000项)的大数组开始,并且每5秒轮询一次,接收数组的更新(通常为2-3一次更新),新阵列只包含已更改的项目(例如,如果只有3个项目发生更改,我只能获得更新阵列中的这3个项目。)JavaScript中的快速方式用新值更新现有阵列
我尝试了下列使用下划线,但它需要9秒,我需要一秒钟或更少。
getUniqueUnion(new, old) {
return uniq(union(new, old), false, function(item) {
return item.info.id;
});
}
任何人都有一个快速方法的建议吗?如果有帮助,唯一的关键是info.id,而我真正想要检测的唯一更改(原因是我需要更新该项目)是否inStock值发生变化。换句话说,如果inStock值没有改变,我不需要对该数组项进行任何更新。
实例阵列:
const originalData = [
{
info: {
id: 1
},
moreInfo: {
name: 'hamburger',
inStock: true
}
},
... // 33,999 more
]
const updatedData = [
{
info: {
id: 1
},
moreInfo: {
name: 'hamburger',
inStock: false
}
},
... // maybe 2 more
]
所以最终的阵列将包括有moreInfo.inStock ===第一项虚假
如果您知道需要更新的条目的id,应该查找“id”,然后更新*只有该条目*而不是重新写入整个阵列 –
是id的顺序?他们从1开始到34000,还是更随机? –
我想我太过于复杂了,我可以在for循环中使用for循环并更改该条目,而不是重写,谢谢@HunterMcMillen。 – Ben