javascript - 替换 switch 语句?

标签 javascript

有什么方法可以替换这个对象的 switch 语句吗?

 Object.keys(data).forEach(key => {
    switch (true) {
        case key === '1':
            Store.get1();
            return;
        case key === '2':
            get2();
            return;
        case key === '4':
            get4(4);
            return;
        case key === '5':
            get5({value1 = 5.value1, value2 = 5.value2});
            return;
        default:
            break;
    }
  })

用这样的东西替换它:

       Object.keys(data).forEach(key => {
          const keyMap = {
        1: Store.get1(),
        2: get2(),
        3: get3(),
        4: get4(),
        5: get5({value1 = 5.value1, value2 = 5.value2}),
        };
        return keyMap[key];

但是这样每次都会触发 keyMap 中的每个函数。

  1. 我需要不带存储的 get2(),因为它只是上层作用域中的一个函数。
  2. 将 5 想象成一个对象 5:{ value1: something, value2: something}

最佳答案

撇开原文的语法错误,只需要查找表中的函数,然后调用它们:

const keyMap = {
  1: Store.get1,
  2: get2,
  3: get3,
  4: get4,
  5: get5,
};

Object.keys(data).forEach(key => {
  return keyMap[key]();
});

关于javascript - 替换 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54983345/

相关文章:

javascript - 层次结构的平面目录路径

javascript - 数据表自定义过滤器 AJAX 数据函数不调用 AJAX

javascript - 我应该使用 props 还是 states 来传递数据?

javascript - Charts.js 使用货币和千位分隔符格式化 Y 轴

javascript - JSON 不返回对象

javascript - 动态更新和检查对象数组

javascript - 是否可以打开一个新窗口并将 iframe 嵌入其中?

javascript - HTML5 通知和权限问题

javascript - undefined variable : user_created_date in php when using __get Method

javascript 对象不会在控制台中打印