javascript - 不同的条件取决于参数
问题描述
如何针对这两种情况(fixAllJobs、logAllJobs)优化 processAllJobs 函数。
processAllJobs = (channel) => {
const jobsCopy = [...this.getState().jobs];
let validJobs = [];
jobsCopy.forEach((job) => {
if (channel === 'fixJobs') {
if (job.processStatus !== ERROR && job.processStatus !== FIXED) {
job.processStatus = IN_PROCESS;
job.progress = 0;
validJobs.push(job);
}
} else {
if (job.processStatus !== ERROR) {
job.processStatus = IN_PROCESS;
job.progress = 0;
validJobs.push(job);
}
}
});
this.setState({isRunning: true, jobs: jobsCopy});
ipcRenderer.send(channel, validJobs);
};
fixAllJobs = () => {
this.processAllJobs('fixJobs');
};
logAllJobs = () => {
this.processAllJobs('logJobs');
};
我只是想出了这个,但这完全是胡说八道。在 if 条件下编写三元运算符是一种好方法吗?
if (channel === 'fixJobs' ? job.processStatus !== ERROR
&& job.processStatus !== FIXED : job.processStatus !== ERROR) {
job.processStatus = IN_PROCESS;
job.progress = 0;
validJobs.push(job);
}
解决方案
You want the condition job.processStatus !== FIXED
to be checked only if channel is fixJobs
, you can write the condition as below to achieve that
job.processStatus !== ERROR && (channel !== 'fixJobs' || job.processStatus !== FIXED)
推荐阅读
- c# - UIAutomation 无法滚动我的 UI 元素。但为什么?
- python - 如何修复:主要功能无法访问 - Python 3.5
- python - 如何在 Aiogram 的调度程序中从 message_handler 中排除 /command?
- spring-cloud-stream - 加入包含对象的 kafka 流
- pandas - GroupBy 方法更改数据类型
- java - 使用 KeyNavigatorBehavior 时使用哪些键来移动?我该如何设置它们?
- javascript - React-Native Firebase 推送通知 onClick 到我的应用程序中的特定页面
- python - python 的 input() 可以根据给定的参数返回一个布尔值吗?
- python-3.x - 绘制 Snort 警报数量与时间的连续图
- python - 为什么变量'x'没有正确定义路径