【问题标题】:javascript retrieve value from a mapjavascript 从地图中检索值
【发布时间】:2021-04-20 04:19:40
【问题描述】:

我正在尝试开发一个谷歌脚本应用程序。

这是一个创建数组映射的函数。

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),

提前致谢!

【问题讨论】:

  • 你想用这个脚本完成什么?最终目标是什么?

标签: javascript dictionary google-apps-script


【解决方案1】:

我重写了代码,以便更好地理解它。据我所知,getOffices 列出了所有办公室,getOrgUnitPath 返回一个路径,其中包括与办公室['Boston', 'NY', 'Lincoln'] 的有序列表匹配的第一个办公室。如果是这样,那么缺少的是getOrgUnitPath 的第一个参数应该是getOffices(),对吗? (注意这是函数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')
}

【讨论】:

    【解决方案2】:

    这是switch case的错误用法。

    如果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";
    }
    
    

    【讨论】:

      猜你喜欢
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2021-09-25
      相关资源
      最近更新 更多