我从一个包含嵌套对象(~34,000个项目)的大型数组开始,每隔5秒进行一次轮询,接收对阵列的更新(一般每次更新2-3次)和新数组只包含已更改的项目(例如,如果只更改了3个项目,我只在我更新的数组中获得这3个项目。)
我尝试了以下使用下划线,但它需要长达9秒,我需要一秒或更少。
getUniqueUnion(new, old) {
return uniq(union(new, old), false, function(item) {
return item.info.id;
});
}
有人建议采取快速方法吗?如果它有帮助,唯一键将是info.id,并且我真正想要检测的唯一变化(我需要更新项目的原因)是inlines值是否改变。换句话说,如果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 === false
的项目答案 0 :(得分:1)
在阅读完你的情况后,我的建议如下:
答案 1 :(得分:0)
我肯定过于复杂了。这是我提出的解决方案,但如果有人知道更快的事情,我会很感激。
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}
}