Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JSX中按键过滤JSON_Json_Reactjs_Filtering_Jsx - Fatal编程技术网

如何在JSX中按键过滤JSON

如何在JSX中按键过滤JSON,json,reactjs,filtering,jsx,Json,Reactjs,Filtering,Jsx,我在React应用程序中尝试过滤JSON数据时遇到问题 我的JSON: function fakeListReports() { return [ { id: 0, project: { id: 7, name: "Music Arena", /...more datas.../ }, redacteur: "Ced", /...more datas.../ }, { id: 1,

我在React应用程序中尝试过滤JSON数据时遇到问题

我的JSON:


function fakeListReports()
{
    return [

  {
    id: 0,
    project: {
      id: 7,
      name: "Music Arena",

      /...more datas.../

    },
    redacteur: "Ced",

    /...more datas.../

  },
  {
    id: 1,
    project: {
      id: 1,

      /...more datas.../

    },
    redacteur: "Ced",

    /...more datas.../

  },
  {
    id: 2,
    project: {
      id: 1,
      name: "Planet Express",

      /...more datas.../

    },
    redacteur: "Ced",

    /...more datas.../

  }
];
}
我想根据项目的id筛选他。我将返回一个列表,其中包含一个项目的所有报告,由他的id

我尝试使用过滤函数,但她总是返回一个空选项卡。。。我已经测试了许多解决方案,但没有成功。我相信过滤功能是达到良好效果的最好方法

我的JSX代码:

const ListReportsByProject = ({ match }) => {
  const id = match.params;
  const [listReport, setListReport] = useState([]);
  const reports = fakeData.fakeListReports();

  const fetchReports = id => {
    console.log(reports);
    console.log(id.id);
    const reportsByProject = reports.filter(r => r.project.id === id.id);
    console.log(reportsByProject);
  };

  useEffect(() => {
    fetchReports(id);
  }, [id]);

  return (
    <div>
      <p>test route</p>
    </div>
  );
};
filter函数始终返回一个空选项卡

id.id的Tu值正确

我找到了解决办法

问题源于id.id是string类型的事实。使用parseInt,问题就解决了

感谢那些试图帮助我的人

 const fetchReports = id => {
    console.log(reports);
    console.log(id);
    const idProject = parseInt(id.id, 10);
    const reportsByProject = reports.filter((r) => r.project.id === idProject);
    console.log(reportsByProject);
};

请给出一个最终结果的示例并删除数据,我认为大部分内容都不相关。您的控制台日志显示了什么?
==id.id
返回了正确的id?是==id.id返回了正确的id。我编辑了我的问题。我想现在更容易理解了。
 const fetchReports = id => {
    console.log(reports);
    console.log(id);
    const idProject = parseInt(id.id, 10);
    const reportsByProject = reports.filter((r) => r.project.id === idProject);
    console.log(reportsByProject);
};