问题描述
我想在地图函数中评估动态创建的字符串。 它应该是这样工作的:
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!
你能做两件事吗?
谢谢
解决方法
尽管 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;}
}