如何解决根据过滤器数组返回对象
我在下面具有JSON格式的状态,并且在选择类别时也具有复选框状态。
initialData = [
{ store_name: 'Shop 1',women: false,men: false,kids: true},{ store_name: 'Shop 2',women: true,kids: false},{ store_name: 'Shop 3',men: true,kids: true}
]
我该如何编写更新showFilteredResults函数,该函数基于filteredArray来过滤initialData?
即如果filteredArray = ['kids','men'],则输出应返回键0(商店1)和键2(商店2)的数据,其中kids = true或men = true。我当前拥有的功能可以显示所有结果。
const [initialData,setInitialData] = useState([{}])
const [Filters,setFilters] = useState({
categories: []
})
//tried the function below,which does not work
const showFilteredResults = (filteredArray) => {
let filteredResults = initialData.filter( function(main_el) {
return filteredArray.filter(function(e){
return main_el.e ===true;})
});
解决方法
您可以通过查找过滤器键之一进行过滤。
const
initialData = [{ store_name: 'Shop 1',women: false,men: false,kids: true },{ store_name: 'Shop 2',women: true,kids: false },{ store_name: 'Shop 3',men: true,kids: true }],filteredArray = ['kids','men'],result = initialData.filter(object => filteredArray.some(key => object[key]));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
,
const initialData = [
{ store_name: 'Shop 1',kids: true},kids: false},kids: true}
]
const filter = ['kids','mens'];
const showFilteredResults = (filteredArray) => initialData.filter(data => filter.some(a => data[a]));
console.log(showFilteredResults(filter))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。