如果密钥存在则检查哈希表,否则默认为存在的内容并返回该值

时间:2017-07-04 01:28:42

标签: javascript

我有以下功能很好用,但我想确保如果提供的zone不存在,它会使用default区域密钥。

module.exports = (zone, key) => {

  const zones = {
    default: require('./default'),
    northeast: require('./northeast'),
    centralCoast: require('./centralCoast')
  };

  return zones[zone][key];
}

在退货声明中是否有更冷静的方式直接这样做?现在,我只是使用一个条件检查来检查我是否得到任何但未定义的东西并返回..

如何检查zonezones之类的northeast, centralCoast等,但如果有人通过western,则会返回default的值}

1 个答案:

答案 0 :(得分:1)

您可以使用简单的三元运算符在return语句中实现条件逻辑。您还可以使用箭头功能省略必须指定显式return

module.exports = (zone, key) => zones[zone]
  ? zones[zone][key]
  : zones.default[key];

我建议在函数外部移动一些静态(不变的代码),这样就不会在每个函数调用上不必要地执行它:

// move constants outside of the function because there's no need to recreate them on each function call
const zoneNames = ['default', 'northeast', 'centralCoast'];

// import the zones dynamically
// this way, adding new zones requires only adding a string to the array above
const zones = zoneNames.reduce((zones, zoneName) => {
  zones[zoneName] = require(zoneName);
  return zones;
}, {});

module.exports = (zone, key) => zones[zone]
  ? zones[zone][key]
  : zones.default[key];