如何根据价值选择属性?

时间:2019-03-21 16:07:32

标签: javascript

考虑以下对象,

const {
  dev,
  qa,
  staging,
  prod,
  customEnv,
} = argv;

未定义值或布尔值的地方。

我想通过这样的操作来选择环境;

const env =
  customEnvironment ||
  dev ||
  qa ||
  staging ||
  prod;
  1. 但是我想获取环境名称而不是值。我该怎么做(简写)?

(如果prod为true,则env应该为'prod')

  1. 如何在不对上面的环境名称进行硬编码的情况下做到这一点?

3 个答案:

答案 0 :(得分:1)

一种方法是在对象中使用所有变量作为键值对,然后找到第一个真值并访问它的键

let customEnvironment = false, dev = true, qa = false, staging = false, prod = false

let tempObj = {customEnvironment,
  dev,
  qa,
  staging,
  prod}


let op = Object.entries(tempObj).find(([,value])=>value)[0]

console.log(op)

答案 1 :(得分:0)

如果您需要查找按照特定 order 设置的第一个属性,那么您实际上应该使用这些属性名称的数组,如下所示:

const argv = { staging: "2.1", prod: "2.1" };

const env = ["customEnvironment", "dev", "qa", "staging", "prod"].find(key => argv[key]);

console.log(env);

答案 2 :(得分:0)

您可以使用循环:

keras.sequence

如果不对属性数组进行硬编码,我想不出一个好方法,因为您需要在某处指定优先级顺序。