我得到了一个包含大约1500个对象的更大数组,我必须根据搜索输入过滤这些对象,但只要数组中的项目超过500个左右,应用程序就会中断
const filteredOptions = options.filter((option) => {
return option.name.toLowerCase().includes(searchValue.toLowerCase());
});
我得到的错误是option.name.toLowerCase()不是函数,但是如果我将数组切片为大约400个项目,它就可以正常工作
这是我使用过滤选项的方式
<ScrollView>
{filteredOptions.map((option, index) => {
return (
<View
key={index}
style={{
backgroundColor: "#ddd",
paddingVertical: 15,
marginTop: 10,
paddingHorizontal: 10,
borderRadius: 8,
}}
>
<TouchableOpacity onPress={() => handleSelection(option)}>
<Text>{option.name}</Text>
</TouchableOpacity>
</View>
);
})}
</ScrollView>
这就是我处理搜索输入的方式
<TextInput
style={{
borderWidth: 1,
fontSize: 20,
paddingVertical: 7,
paddingHorizontal: 4,
borderRadius: 12,
marginBottom: 30,
}}
value={searchValue}
onChangeText={(text) => setSearchValue(text)}
placeholder={"Trazi"}
placeholderTextColor={"#000"}
/>
如果我试图只Map选项而不对它们进行切片和过滤,我会得到错误maximum call stack size exceeded dep
1条答案
按热度按时间wljmcqd81#
首先,您需要添加一个空检查:
第二,由于性能问题,对于这个大的项目列表,最好使用FlatList。