我有以下功能很好用,但我想确保如果提供的zone
不存在,它会使用default
区域密钥。
module.exports = (zone, key) => {
const zones = {
default: require('./default'),
northeast: require('./northeast'),
centralCoast: require('./centralCoast')
};
return zones[zone][key];
}
在退货声明中是否有更冷静的方式直接这样做?现在,我只是使用一个条件检查来检查我是否得到任何但未定义的东西并返回..
如何检查zone
是zones
之类的northeast, centralCoast
等,但如果有人通过western
,则会返回default
的值}
答案 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];