【问题标题】:Can i use a .map() in a switch? [duplicate]我可以在开关中使用 .map() 吗? [复制]
【发布时间】:2021-07-20 11:19:04
【问题描述】:

我需要编写一个代码来在工作中进行选择,并且我想使用一个开关来做到这一点。使用 MongoDB 和 Mongoose,我做了一个 .find(),以获取集合中的每一项工作,然后我声明了一个 switch。由于我不想每次在数据库中添加或删除作业时都更新代码,所以我想用我之前做的.find() 的结果做一个.map()

于是我开始编写一些代码,结果出现了一个语法错误。我将粘贴代码,以便您查看我所做的。

const jobs = await jobModel.find()

switch (args[0]) {
   jobs.map((job) => {
      case job.jobname:
         console.log(job.jobname)
   })
   default:
      message.channel.send(fofEmbed)
      break;
}

现在我的问题是,有没有办法让地图处于切换状态?如果没有,如何根据我在数据库中的工作获得动态的案例数量?

【问题讨论】:

  • 没有。那是无效的语法。 :)
  • 所以实际上没有办法进行动态切换?

标签: node.js ecmascript-6


【解决方案1】:
you can create a custom switch statement as shown below,

var callbackArr = [];
function customSwitch(casestmt, callback){
     var callbackObj = {};
     callbackObj['cs'] = casestmt;
     callbackObj['clbkfn'] = callback;
     callbackArr.push(callbackObj);
}
function switchExecute(condition) {
   const fn = callbackArr[callbackArr.findIndex(data => data.cs ===condition)].clbkfn(); 
}
jobs = [{'jobname': 'job1'},{'jobname': 'job2'}, {'jobname': 'job3'},{'jobname': 'job4'} ];
jobs.forEach((job)=> {
  customSwitch(job.jobname, ()=> {console.log(job.jobname)});
});

switchExecute(args[0]);

您可以使用闭包来管理 callbackArr 的范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2011-09-01
    • 1970-01-01
    • 2021-10-22
    • 2011-05-01
    • 2021-12-05
    • 2021-07-13
    • 1970-01-01
    相关资源
    最近更新 更多