javascript - 搜索对象数组
问题描述
Imagen 如果我有一个对象数组 - id 和 value。现在数组是空的 Array []。但是,只要用户键入并添加名称,就会被派上用场。如果用户键入 Anna、Pedro 和 Joana,则数组将更新为
Array [
Object {
"id": "0.265247357395923",
"value": "Anna",
},
Object {
"id": "0.07416445026556007",
"value": "Pedro",
},
Object {
"id": "0.9097178194832282",
"value": "Joana",
},
]
我的任务是添加一个搜索栏,我可以在其中搜索数组内的对象值。到目前为止,这是我的代码。
我的使用状态
const [folder, emptyFolder] = useState([]);
const [searchTerm, setSearchTerm] = useState("");
我的名字
const addFolder = (folderName) => {
emptyFolder((currentFolder) => [
...currentFolder,
{ id: Math.random().toString(), value: folderName },
]);
};
我的搜索。到目前为止,这是我想要实现我的代码的地方,这是我能够做到的:
const filteredData = folder.filter((item) => {
const textData = searchTerm.toUpperCase();
const nameFolder = item.value.toUpperCase();
return nameFolder.includes(textData);
});
const _searchFilterFunction = (value) => {
//???
};
这是我的返回,其中我有 TextInput 作为我的搜索栏和 {filteredData.map((item, index) => { return {item.value}; })} 每次用户创建时显示我的名单。
return (
<View style={styles.HomeContainer}>
<TextInput
underlineColorAndroid="transparent"
autoCapitalize="none"
placeholderTextColor="#9a73ef"
style={styles.search}
placeholder="Search"
onChangeText={(value) => {
_searchFilterFunction(value, folder);
}}
/>
<FolderInput myFolder={addFolder} />
{filteredData.map((item, index) => {
return <Text key={item.id}>{item.value}</Text>;
})}
</View>
);
};
请帮助非常感谢。
解决方案
你正在尝试的是,正确的。
const filteredData = folder.filter((item) => {
const textData = searchTerm.toUpperCase();
const nameFolder = item.value.toUpperCase();
return (nameFolder.indexOf(textData) >= 0)
});
includes
用于带有字符串的数组,但实际上您是在比较字符串吗?因此,如果您的搜索字符串是对象项的子字符串,您可以使用indexOf
它将返回。true
推荐阅读
- python - 如何在while循环中找到最大数字
- reactjs - 有没有办法创建一个通过数据集分页的反应轮播?
- c - 如何将无符号整数存储在结构数组中?
- javascript - 如果用户输入超过它,如何将输入设置为它的最小/最大阈值
- c++ - 如何在使用时不知道类型的情况下为输入/输出编写 C++ 运算符重载
- typescript - 默认 Typescript React-Native 项目给出 200 个错误
- php - 如何在后台运行一个函数?
- json - Dart json_serializable 库尝试为嵌套类型列表提供列表
- bixby - 如何让 Stories 忽略 EmptyOptionalValue
- scala - 使用 fs.s3a.path.style.access 属性的 Spark 路径样式访问不起作用