JS如何动态输出执行语句?

            switch (data.multiIndex[0]) {
              case 0:
                data.multiArray[1] = res[0];
                break;
              case 1:
                data.multiArray[1] = res[1];
                break;
              case 2:
                  data.multiArray[1] = res[2];
                  break;
            .....
            }

可能我有N个case匹配值,需要循环动态输出case 3.....

switch (data.multiIndex[0]) {
for(....){
              case 0:
                data.m

原本这样写感觉能成,结果出错了。求解决办法

阅读 1.5k
3 个回答

如果 data.multiIndex[0] 的值明确与 res 数组的下标是同一个关系的话,直接读下标即可,不用把简单的事情复杂化。

data.multiArray[1] = res[data.multiIndex[0]];

for 循环必须放在 case 里,不能在 case 外。

case 里面的代码有规律姓的话,可以不用switch,示例代码可以改为 data.multiArray[1] = res[data.multiIndex[0]]
动态输出可以用 new Function

var caseStr = [0,1,2,3].map(index=>`
    case ${index}:
        data.multiArray[1] = res[${index}];
        break;
`).join('')
var fnStr = `switch (data.multiIndex[0]) {${caseStr}}`
console.log(fnStr)
const fn = new Function(fnStr);
console.log(fn)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题