通过许多 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')

的调用中可能存在的瓶颈