javascript - 从 reactjs 中的键值对象过滤
问题描述
我正在创建搜索栏来过滤键值数据对象。我在进行搜索时收到过滤器不是功能错误。是否有任何其他功能可以过滤键值对对象?
数据 :-
{
meta_city : {
label: "City"
values: (5) ["DL", "KA", "GJ", "MH", "UP"]
},
meta_country : {
label: "Country"
values: (5) ["IN", "US", "CA"]
}
}
处理搜索(filterData 数据是本地状态):-
const handleSearchFilter = (event) => {
const searchWord = event.target.value;
const newFilter = Object.keys(filterData).map((key) => {
filterData[key].filter((value) => {
return value.includes(searchWord);
});
});
setFilterData(newFilter);
};
<div className="mp-input-field-container">
<input
className="mp-input"
placeholder="Search"
onChange={handleSearchFilter}
/>
</div>
解决方案
你应该reduce
这样使用:
const handleSearchFilter = (event) => {
const searchWord = event.target.value;
const newFilter = Object.keys(filterData).reduce((result, key) => {
if (filterData[key].values.includes(searchWord)) {
result.push(filterData[key]);
};
return result;
}, []);
setFilterData(newFilter);
};
在这个例子中,我返回一个数组结果。如果你愿意,你可以返回一个对象。
推荐阅读
- redirect - HSTS 重定向将 Origin 设置为“null”
- javascript - 哪个哈希函数更适合在小哈希表中表示 128 位随机 id
- sql - 前一天的期末余额作为今天的期初余额
- c++ - 如何将 Google Mock 与 CppUnitTestFramework 一起使用
- java - How can I create a maven plugin to test the source code of a project?
- html - 居中在父 div 中有兄弟姐妹的子元素
- r - order(x, na.last = FALSE) 的意外行为
- sql - 如何查找多个列值之间的差异
- java - 在 Scala 中调用 API 时传递凭据
- ansible - 如何通过 Ansible 使用模块而不是 shell 查看单个服务状态?