返回基于过滤器阵列的对象



我有一个JSON格式的状态,还有一个复选框状态,用于选择类别。

initialData = [
{ store_name: 'Shop 1',
women: false,
men: false,
kids: true},
{ store_name: 'Shop 2',
women: true,
men: false,
kids: false},
{ store_name: 'Shop 3',
women: false,
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, men: false, kids: false }, { store_name: 'Shop 3', women: false, 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',
women: false,
men: false,
kids: true},
{ store_name: 'Shop 2',
women: true,
men: false,
kids: false},
{ store_name: 'Shop 3',
women: false,
men: true,
kids: true}
]
const filter = ['kids', 'mens'];
const showFilteredResults = (filteredArray) => initialData.filter(data => filter.some(a => data[a]));
console.log(showFilteredResults(filter))

最新更新