假设我有几个环境变量,假设名称为
OBJECT_A
、OBJECT_B
、OBJECT_C
等。
我必须实现一个必须返回布尔值的函数doTheyExist()
。
我想知道什么是最干净的(例如,尽可能少的代码和尽可能容易阅读的)和最有效的(例如使用尽可能少的资源)来实现这样的功能。
function doTheyExist() {
if (
process.env.OBJECT_A &&
process.env.OBJECT_B &&
process.env.OBJECT_C &&
...
) return true;
return false;
}
我最初认为我可以使用
return (object_a && object_b && ...);
来解决这个问题,因为它可以节省一行,但事实证明它可能会返回 undefined
,而不是 false
。我不能拥有那个。返回值必须严格为 true
或 false
。有没有更干净的方法来做到这一点?我知道这是一件小事,即使我要检查数千个变量,也不会影响整体性能,但这是进行此类检查的最有效方法吗?
您可以定义要检查的键数组,然后使用
every()
您可以创建一个布尔值(如果它们都存在)。
const data = {
OBJECT_A: 1,
OBJECT_B: 2,
OBJECT_C: 3
};
const objectHasKeys = (obj, keys) => keys.every(k => data[k]);
console.log(objectHasKeys(data, [ 'OBJECT_A' ]));
console.log(objectHasKeys(data, [ 'OBJECT_A', 'OBJECT_B' ]));
console.log(objectHasKeys(data, [ 'OBJECT_X', 'OBJECT_Y' ]));