2017-02-09 66 views
0

所以我想分割数字的列表,这里是它的代码。如何使用缩小功能进行分割?

var myArray = document.getElementById("listInput").value.split(" "); 

我从箱子“listInput”中取出了数值,然后对它进行分割,这样就更容易分割了。然后:

for(i=0;i<myArray.length; i+=1){ 
if(myArray[i] === "divide") 

在这里我做了一个for循环这样的程序会通过每分裂字,直到找到字符串“鸿沟”。之后:

{ 
document.getElementById("resultNumberTotal").value =   
myArray.reduce(function(total, curr) { 
    if (!isNaN(Number(curr))) { 
    total = Number(curr) /total ; 
    } 
    return total; 
}, 1); 
} 
} 
} 

Up在这段代码,在这里我想显示的结果“resultNumberTotal”框,我把它等于“降低功能”作为U可以。最近我学到了.reduce是一种很好的方式来添加/乘法/除法。我有2个参数。程序通过循环,找到一个数字(curr),然后找到命令“divide”,然后找到另一个数字,称为“total”,并评估答案,例如:

[9 divide 3] = 9/3 = 3或[1分10] = 1/10 = 1

我在做什么错。PLZ帮助我理解,以及多谢

+0

我不知道是减少对工作的工具。你有没有想过使用正则表达式?你能举出更多的输入和输出应该是什么样的例子吗? – Giladd

+0

我不确定你的意思是正则表达式。而对于这些例子,我的意思是说,如果我输入一个数字,然后我输入“divide”,然后输入第二个数字,我希望第一个数字除以第二个数字。 –

回答

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 
 

 
}
<input type="text" id="listInput" /> 
 
<input type="text" id="resultNumberTotal" />