在 Node.js 中检查是否存在多个对象的最优雅的方法是什么?

问题描述 投票:0回答:1

假设我有几个环境变量,假设名称为

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
。有没有更干净的方法来做到这一点?我知道这是一件小事,即使我要检查数千个变量,也不会影响整体性能,但这是进行此类检查的最有效方法吗?

javascript node.js environment-variables boolean-expression
1个回答
0
投票

您可以定义要检查的键数组,然后使用

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' ]));

© www.soinside.com 2019 - 2024. All rights reserved.