2017-02-09 67 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" />