我以包含嵌套對象(〜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