javascript - 如何避免做同样事情的 if-else 语句?
问题描述
我试图最小化一个小js程序,我遇到了这个问题:我不想写很多if-else
他们都做同样事情的陈述。有没有一种优雅的方式来重写这个函数?
function advance_bthrads(toCompare, arr) {
arr.forEach(function(element) {
if (element.value) {
let wf = element.value['wait_for'];
let req = element.value['request'];
if (wf && req) {
if (toCompare === wf[0] || toCompare === req[0]) {
element = update_element(element);
}
} else if (wf) {
if (toCompare === wf[0]) {
element = update_element(element);
}
} else if (req) {
if (toCompare === req[0]) {
element = update_element(element);
}
}
}
});
return arr;
}
解决方案
forEach
不返回任何东西 - 使用map
:
arr = arr.map(element => {
if (element.value) {
let [wf] = element.value['wait_for'] || [0];
let [req] = element.value['request'] || [0];
if (wf && req && [wf, req].includes(toCompare)) element = update_element(element);
}
return element;
});
推荐阅读
- javascript - “free robux”诈骗网站上使用的反混淆算法
- shell - 无法在 openstack heat 模板的 user_data 中运行命令
- python-3.x - 使用 tf.GradientTape 进行量化感知训练在 TensorFlow2.0 中出现错误
- java - spring boot 应用程序启动时如何执行逻辑?
- java - Java,访问存储在列表中的双端队列
- zio - Convert ZIO Task to IO
- javascript - 拖放未将输入值设置为等于文件。如果使用输入按钮选择则有效
- python - 在 Python 中将一些文件从子文件夹移动到另一个子文件夹
- reactjs - 如果已定义,则有条件地渲染对象,如果未定义则抱怨
- google-app-engine - 使用 terraform 应用时,GCP App Engine 防火墙未反映在 GCP 控制台上