【问题标题】:Return Objects Based on Filter Arrays基于过滤器数组返回对象
【发布时间】:2020-12-13 11:13:51
【问题描述】:

下面有一个 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}
]

如何编写更新基于过滤数组过滤 initialData 的 showFilteredResults 函数?

即如果filteredArray = ['kids', 'men'],输出应该返回key 0(shop 1)和key 2(shop 2)的数据,其中kids = true OR 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;})
});

【问题讨论】:

    标签: javascript arrays json reactjs filter


    【解决方案1】:

    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))

    【讨论】:

      【解决方案2】:

      您可以通过查找其中一个过滤键来过滤。

      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; }

      【讨论】:

        猜你喜欢
        • 2019-11-02
        • 1970-01-01
        • 2019-04-29
        • 1970-01-01
        • 2020-07-04
        • 2017-10-07
        • 2021-10-02
        • 1970-01-01
        相关资源
        最近更新 更多