2017-02-09 1 views
0

그래서 나는 숫자의 목록을 나누려고 노력하고 있으며, 여기에 대한 코드가있다. reduce 함수를 사용하여 나누기를 수행하려면 어떻게합니까?

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

나는 상자 "listInput"의 값을 가져다가 나누어 쉽게 그래서 나는 그것을 분할합니다. 그리고 여기

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

까지 나는 루프를 만든 그래서 문자열을 찾을 때까지 각 분할 할 단어를 통해 갈 것이다 프로그램 "분할." 그 후 : U이 할 수있는

{ 
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

난 확실히 감소되지는 작업에 적합한 도구입니다. 정규 표현식을 사용한다고 생각 했습니까? 입력과 출력이 무엇이되어야하는지에 대해 더 많은 예를들 수 있습니까? – Giladd

+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 
 

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

관련 문제