2017-02-09 3 views
0

私はnumberのリストを分割しようとしています。ここにコードがあります。reduce関数で除算を行うにはどうすればよいですか?

私はボックス "listInput"から値をとったので、分割しやすくなりました。その後:ここ

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

アップは、私はループのために作られたので、それは文字列が見つかるまで、各分割さ言葉を経るだろうプログラム「分割。」その後:このコードでは最大

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

、私は結果を表示したいボックス「resultNumberTotalは」、私はuができるよう、「.reduce機能」と、それは等しくなります。私は最近、.reduceが追加/乗算/除算の良い方法であることを知った。私は2つのパラメータを持っています。プログラムはループを通って数字(curr)を見つけ、次に "divide"というコマンドを見つけて "total"と呼ばれる別の数字を見つけて答えを評価します:

[9 divide 3] = 9/3 = 3または[1つの除算10] = 1/10 = 1

私が間違って何をやっている。Plzを私は同様ありがとう

+0

仕事のための適切なツールである減らします。正規表現の使用を考えましたか?あなたは、入力と出力が何であるべきかのより多くの例を挙げることができますか? – Giladd

+0

正規表現の意味がわかりません。そして、例の場合、私は数字を入れて "分割"し、最初の数字を2番目の数字で割った2番目の数字を入れたようなものです。 –

答えて

0

を理解するのに役立つが、ここからの計算の異なる部分を抽出するために、正規表現を使用する例です入力要素の文字列
抽出するものの1つは、実行する必要のある操作であり、この関数はこの値を使用して計算を実行し、結果を返します。

これはあなたが必要とするものであるかどうかはわかりませんが、これはあなたの問題を解決する1つの方法だと思います。私はよく分からない

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" />

関連する問題