簡體   English   中英

javascript 從 map 檢索值

[英]javascript retrieve value from a map

我正在嘗試開發一個谷歌腳本應用程序。

這里是一個 function 創建一個數組 map。

function getOffices(){
 var result=AdminDirectory.Groups.list({domain:"example.com"})
  result=result.groups.filter(function(group){
    var str=group.email;
     return str.search("-office@example.com")>=0;
  })
  result=result.map(function(group){ return {name:group.name,email:group.email}})
 
  return result;
}

我創建了一個邏輯塊,我想根據結果執行某些操作,如下所示:

var getOrgUnitPath = (accountOffice, accountType) => {
if (accountType === 'facilitator') {
  return 'Limited Accounts/Gmail Plus Calendar';
} else {
  switch (accountOffice) {
    case accountOffice.includes('Boston'):
      return "/Standard-Access/Boston";
      break;
    case accountOffice.includes('New York'):
      return '/Standard-Access/New York';
      break;
    case accountOffice.includes('Lincoln'):
      return '/Standard-Access/Lincoln';
      break;
    default:
      return '/Standard-Access';
      break;
  }
}

};

最后,我嘗試設置組織單位——這最終是我想要做的,但似乎無法正確使用語法,我已經嘗試了我能想到的一切。 我已經硬編碼了“accountType”並且它工作了,所以我知道 formObject.accountType 運行正常。

orgUnitPath: getOrgUnitPath(accountType, formObject.accountType),

提前致謝!

這是開關盒的錯誤用法。

如果accountOffice只是紐約、波士頓、林肯。 刪除復雜條件並替換為

switch (accountOffice) {
  case "Boston":
    return "/Standard-Access/Boston";
    break;
  case "New York":
    return "/Standard-Access/New York";
    break;
  case "Lincoln":
    return "/Standard-Access/Lincoln";
    break;
  default:
    return "/Standard-Access";
    break;
}

如果不是,如果您有復雜的條件要檢查而不是簡單的匹配情況,請使用 if-else

if (accountOffice.includes("Boston")) {
  return "/Standard-Access/Boston";
} else if (accountOffice.includes("New York")) {
  return "/Standard-Access/New York";
} else if (accountOffice.includes("Lincoln")) {
  return "/Standard-Access/Lincoln";
} else {
  return "/Standard-Access";
}

我重寫了代碼,以便更好地理解它。 據我所知, getOffices列出了所有辦公室, getOrgUnitPath返回一個路徑,其中包括與辦公室的有序列表匹配的第一個辦公室['Boston', 'NY', 'Lincoln'] 如果是這種情況,那么缺少的是getOrgUnitPath的第一個參數應該是getOffices() ,對嗎? (注意這是 function getOffices的執行。)

這是我喜歡的“簡化”代碼。 我希望它有幫助:

const getOffices = () => {
  const bigList = x.y.list({ domain: 'example.com' }) // ?
  return bigList
    .filter(cur => ~cur.email.search('abc'))
    .map(cur => ({
      name: cur.name,
      email: cur.email
    }))
}

const getPath = (accOffice, accType) => {
  if (accType === 'xyz')
    return 'foobar'
  const city = ['Boston', 'NY', 'Lincoln']
    .find(cur => accOffice.includes(cur))
  return `yadayada/${city}`
}

const theFinalObj = {
  orgUnitPath: getPath(getOffices(), 'rightHardcodedType')
}

暫無
暫無

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

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