首页 > 解决方案 > 如何避免做同样事情的 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;
}

标签: javascriptarraysobjectif-statement

解决方案


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;
});

推荐阅读