reactjs - 如何根据条件对列表进行排序?
问题描述
我有两个表,第一个存储公司,第二个存储这些公司的订单,但是如果您为特定公司创建订单,然后从公司列表中删除该公司,则会出现错误。如何只显示那些与现有公司一致的订单,即如果没有公司,则没有订单。
现在我正在尝试做这样的事情,但我不明白接下来会发生什么......
import React from "react";
import "./styles.css";
export default function App() {
const arr1 = {
company: [
{
id: "random1",
companyName: "Apple"
}
]
};
const arr2 = {
projects: [
{
id: "random1",
companyName: "Apple",
descProjects: "Desc1"
},
{
id: "random2",
companyName: "Samsung",
descProjects: "Desc2"
}
]
};
const blockCreate = () => {
return arr1.company.map(item => {
const projects = arr2.projects.filter(i => {
return i.companyName === item.companyName;
});
return (
<p>
<span>ID {item.id} - </span>
<br />
{item.companyName}
</p>
);
});
};
return (
<div className="App">
<div>{blockCreate()}</div>
</div>
);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
解决方案
您必须在映射第二个数组之前对其进行过滤。
你可以尝试这样的事情:
const companies = arr1.company.map(company => company.companyName); // ["Apple", "Microsoft", ...]
const projects = arr2.projects.filter(project => companies.includes(project.companyName));
projects.map(project => (
<p>
<span>ID {project.id} - </span>
<br />
{project.companyName}
</p>
))
推荐阅读
- r - 如何在ggplot中制作条形图?
- javascript - 我该如何为此编写javascript和html代码?
- image - 处理:高效创建均匀网格
- java - 使用并发 API 时是否需要使用同步
- c# - Unity Colliders 无法按预期工作 - 我通过它或检测到没有触摸的碰撞
- javascript - 在充当基本命令外壳的节点中启动子进程的最佳方法?
- android - 通过 Cloud Messaging 禁用 Firebase 云消息传递到托盘
- python - 我想在 Telegram 上向我之前没有交谈过的新聊天发送自动回复
- ios - CLLocationManagerDelegate 方法不运行
- assembly - 未找到 PIC10F200 包含的文件