javascript - 如何使用两个单独的数组执行操作,一个包含值,另一个包含操作数
问题描述
var num = [12, 13, 15, 22];
var oper = ["+", "-", "*"];
我怎样才能做一个循环,我可以做以下操作
12 + 13 - 15 * 22
我试图这样做:
for(var t = 0; t < num.length - 1; t++) {
retVal += num[t] oper[t] num[t+1]
}
但这对我不起作用
我怎样才能实现我想要做的事情。
此处不需要 Ps 操作数优先级。
解决方案
您可以将数组与分隔符数组和 eval 表达式连接起来。这尊重运算符的优先级。
const
join = ([a, b, ...array], [s, ...separators]) => array.length
? join([a + s + b, ...array], separators)
: a + s + b;
var num = [12, 13, 15, 22],
oper = ["+", "-", "*"],
term = join(num, oper);
console.log(term);
console.log(eval(term));
如果您不需要运算符优先级,则可以使用带有运算符的对象并减少数组。
var num = [12, 13, 15, 22],
oper = ["+", "-", "*"],
op = { '+': (a, b) => a + b, '-': (a, b) => a - b, '*': (a, b) => a * b },
opValues = oper.values(),
result = num.reduce((a, b) => op[opValues.next().value](a, b));
console.log(result);
推荐阅读
- node.js - Socket.io 一对一聊天
- html - 如何使表格中的div居中
- java - 焦点更改为 Listview 中的下一个 EditText 后验证 EditText 中的输入
- python - AWS how do read params for a POST with binary payload?
- excel - Transferring DAX formulas from Powerbi to Power Pivot in Excel
- c# - With Microsoft.Extensions.DependencyInjection, can I resolve the type and construct an instance while providing extra constructor parameters?
- c# - Unity, C# - pointer using mouse
- python - Nested FOR loop for my web scraper halfway working (Beautiful Soup)
- reactjs - React window how to iterate your data?
- powershell - In these Powershell -replace commands from the cmd prompt, why does the first escape double quotes successfully and the second doesn't?