所以我试图划分一个数字列表,这里是它的代码。
var myArray = document.getElementById("listInput").value.split(" ");
我从“listInput”框中取出值,然后将其拆分,以便更容易划分。然后:
for(i=0;i<myArray.length; i+=1){
if(myArray[i] === "divide")
在这里我做了一个for循环,所以程序将遍历每个分裂的单词,直到找到字符串“divide”。之后:
{
document.getElementById("resultNumberTotal").value =
myArray.reduce(function(total, curr) {
if (!isNaN(Number(curr))) {
total = Number(curr) /total ;
}
return total;
}, 1);
}
}
}
在这段代码中,我想要显示结果“resultNumberTotal”的框,我把它等同于“.reduce函数”。我最近了解到.reduce是一种很好的添加/乘法/除法的方法。我有2个参数。程序通过循环,找到一个数字(curr),然后找到命令“divide”然后找到另一个名为“total并且评估答案的数字,例如:
[9除3] = 9/3 = 3或[1除10] = 1/10 = 1
我做错了什么。 Plz也帮助我理解谢谢
答案 0 :(得分:0)
这是一个使用正则表达式从输入元素中的字符串中提取计算的不同部分的示例。
它提取的一件事是需要完成的操作,我们的函数使用该值来执行计算并返回结果。
我不确定这正是您所需要的,但我认为这是解决问题的一种方法。
const input = document.getElementById("listInput");
const output = document.getElementById("resultNumberTotal");
const regex = /(\d+)\s+(divide|add|multiply|subtract)\s+(\d+)/g;
input.onchange = function(ev) {
output.value = check(input.value);
}
function check(str) {
let m = regex.exec(str);
if (m == null || m.length < 4) {
return ''
}
const a = m[1],
b = m[3],
op = m[2];
let res = NaN;
switch (op) {
case 'divide':
res = a / b;
break;
case 'add':
res = a + b;
break;
case 'multiply':
res = a * b;
break;
case 'subtract':
res = a - b;
break;
}
return '[' + a + ' ' + op + ' ' + b + '] = ' + res
}
&#13;
<input type="text" id="listInput" />
<input type="text" id="resultNumberTotal" />
&#13;