通过许多 objects 优化我的搜索查询
Optimizing my search query through many objects
下面的片段,它的作用是搜索大约 100 objects 并检查我的查询是否与条目的标题匹配,一次一个字符。
输入任何字母时,它会冻结浏览器约 5 秒钟,然后再重新获得控制权。
片段:
results = _.filter(cmp.get('v.components'), function(item) {
return item.componentName.toLowerCase().indexOf(queryResult) != -1;
});
作为 Javascript 的新手,我在编写这段代码时遇到了一些问题,所以我对如何改进它有点陌生。我准备了一段代码,因此在获得结果后删除它之前会显示一个加载屏幕,但由于浏览器冻结,它什么也不会显示。
顺便说一句,我们只能使用 Javascript 和 underscore.js,因此我们无法访问 jQuery 或其他库。
你可以从下划线切换到纯 js,它应该接近下划线的两倍。此外,它不是更多的代码。我创建了一个非常简单的基本测试 here.
js 版本看起来像
data.filter(item => item.componentName.toLowerCase().indexOf(queryResult) > -1);
或其等效的 es5
data.filter(function(item) { return item.componentName.toLowerCase().indexOf(queryResult) > -1; });
对于其余部分,您需要检查对 cmp.get('v.components')
的调用中可能存在的瓶颈
下面的片段,它的作用是搜索大约 100 objects 并检查我的查询是否与条目的标题匹配,一次一个字符。 输入任何字母时,它会冻结浏览器约 5 秒钟,然后再重新获得控制权。
片段:
results = _.filter(cmp.get('v.components'), function(item) {
return item.componentName.toLowerCase().indexOf(queryResult) != -1;
});
作为 Javascript 的新手,我在编写这段代码时遇到了一些问题,所以我对如何改进它有点陌生。我准备了一段代码,因此在获得结果后删除它之前会显示一个加载屏幕,但由于浏览器冻结,它什么也不会显示。
顺便说一句,我们只能使用 Javascript 和 underscore.js,因此我们无法访问 jQuery 或其他库。
你可以从下划线切换到纯 js,它应该接近下划线的两倍。此外,它不是更多的代码。我创建了一个非常简单的基本测试 here.
js 版本看起来像
data.filter(item => item.componentName.toLowerCase().indexOf(queryResult) > -1);
或其等效的 es5
data.filter(function(item) { return item.componentName.toLowerCase().indexOf(queryResult) > -1; });
对于其余部分,您需要检查对 cmp.get('v.components')