我有一个约 5000 个元素的列表,我想过滤它,searchPhrase
由用户给出。通常用户输入过滤短语的第一个字母,然后是第二个,然后是第三个。例如用户类型'a'
,然后'ab'
,然后'abc'
。
我正在尝试使用 reactjs/reselect 库来提高过滤性能。我在自述文件中的示例中使用了这个库: 示例 我改变了这个方法:
export const getVisibleTodos = createSelector(
[ getVisibilityFilter, getTodos ],
(visibilityFilter, todos) => {
switch (visibilityFilter) {
case 'SHOW_ALL':
return todos
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
}
}
)
对该实施:
export const getVisibleTodos = createSelector(
[getSearchPhrase, getTodos],
(searchPhrase, todos) => {
return todos.filter((x) => {
return x.firstName.indexOf(searchPhrase) >= 0;
});
}
)
我注意到每次用户键入下一个字母todos.length
属性时都是相同的。不应该在更长todos.length
的时候更短吗?searchPhrase
我认为没有 reactjs/reselect 的性能是一样的。
todos
当先前searchPhrase
是实际的子字符串时,是否有可能过滤较短的列表searchPhrase
?