代码之家  ›  专栏  ›  技术社区  ›  Darren

过滤数组,然后在数组中映射数组

  •  0
  • Darren  · 技术社区  · 7 年前

    我很确定我遗漏了一些简单的东西,但这段代码让我头痛不已。

    array 在当地 json 文件为

    {
      "type": [
        {
          "name": "Accommodation",
          "icon": "🏨",
          "subcategory": [
            "Hotels",
            "Motels",
            "Bed & Breakfasts"
          ]
        },
        {
          "name": "Guided Tours",
          "icon": "🚌",
          "subcategory": [
            "Audio & Self Guided",
            "Cruises, Sailing & Water",
            "Food, Wine & Nightlife"
          ]
        }
      ]
    }
    

    以及作为

    import { type } from './assets/json/company-type.json';
    

    那我用的是 filter name companyType (基于 select 其中之一的值 Accommodation 或 Guided Tours map 这个 subcategory

    <ul>
      {type
        .filter(item => {
          return item.name === companyType;
        })
        .map(item => {
          item.subcategory.map(subcategory => {
            <li key={subcategory}>
              <label id={subcategory} htmlFor={subcategory}>
                <input
                  type="radio"
                  name={subcategory}
                  value={subcategory}
                />
                <span />
                {subcategory}
              </label>
            </li>;
          });
        })}
    </ul>
    

    但是,什么也没有返回。但是如果我 log 子类别

    1 回复  |  直到 7 年前
        1
  •  1
  •   samfed    7 年前

    这是因为您没有从.map()方法返回。 使用此修改后的代码,它将按预期工作

    <ul>
        {type
          .filter(item => {
            return item.name === "Accommodation";
          })
          .map(item => {
            return item.subcategory.map(subcategory => {
              return (
                <li key={subcategory}>
                  <label id={subcategory} htmlFor={subcategory}>
                    <input
                      type="radio"
                      name={subcategory}
                      value={subcategory}
                    />
                    <span />
                    {subcategory}
                  </label>
                </li>
              );
            });
          })}
     </ul>
    

    代码沙盒链接: https://codesandbox.io/s/4881483j7x