簡體   English   中英

如何根據價值選擇屬性?

[英]How to select property based on value?

考慮以下對象,

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

值是未定義或布爾值的地方。

我想通過做這樣的事情來選擇環境。

const env =
  customEnvironment ||
  dev ||
  qa ||
  staging ||
  prod;
  1. 但是我想獲取環境名稱而不是值。 我該怎么做(簡寫)?

(如果prod為true,則env應該為'prod')

  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) 

如果您需要查找按照特定順序設置的第一個屬性,那么您實際上應該使用這些屬性名稱組成的數組,如下所示:

 const argv = { staging: "2.1", prod: "2.1" }; const env = ["customEnvironment", "dev", "qa", "staging", "prod"].find(key => argv[key]); console.log(env); 

您可以使用循環:

let env;
const props = ["customEnvironment", "dev", "qa", "staging", "prod"];
for (let i = 0; i < props.length; i++) {
    if (argv[props[i]]) {
        env = props[i];
        break;
    }
}

如果不對屬性數組進行硬編碼,我想不出一個好方法,因為您需要在某處指定優先級順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM