动态更改 Javascript 映射语句

问题描述

我想在地图函数中评估动态创建的字符串。 它应该是这样工作的:

ar arr = [1,2,3,4,5];
var arr2 = arr.map(v=>((v+5)*6));     //Gives  [36,42,48,54,60]

我创建了一个字符串如下:

var s = '((v+5)*6)';
var arr2 = arr.map(v=>eval(s));      // I need something like this to work!

你能做两件事吗?

  1. 展示如何在我创建的字符串(或修改后的字符串)上使用 eval 来完成此操作。
  2. 建议另一种(更好)的方法 - 我确定有一种方法
  3. 不要只是跳过第 1) 点

谢谢

解决方法

尽管 eval 可能是错误的实现方式,但这将是让它运行的方式。

const arr = [1,2,3,4,5];
let s = '((v+5)*6)';
const arr2 = arr.map(eval(`v => ${s}`));
console.log(arr2);

否则,您应该为字符串使用或创建解析器,例如 Math.js。或查看 this page 以获得想法。

,

arr.map(v=>calc(v))

将类似的内容传递给 map 函数:

function calc(v){
          if (a=='plus') {return v+n;}
          if (a=='minus') {return v-n;}
          if (a=='multiply') {return v*n;}
          if (a=='divide') {return v/n;}
          if (a=='modulo') {return v%n;}
 }