2016-10-04 7 views
0

함수 RPNCalculator와 같은 배열에 대한 메서드를 만들고 있지만 어떤 이유로 올바르게 작동하지 않습니다.빼기 작업은 항상 양수 값을 반환합니다.

예를 들어, 조작 3 - 8을 수행하려고하면 -5 대신 3을 리턴하고, 3 - 4는 -1 대신 1을 리턴합니다. 당신이 안으로 볼 수 있듯이 num 변수입니다.

정말 감사드립니다.

RPN은 [2, 3, 4]

RPNCalculator.prototype.minus = function() { 
 
\t console.log("First item " + this[this.length - 2] + "\nLast Item " + this[this.length - 1]); 
 
     /* Logs:First item 3 
 
       Last Item 4 */ 
 
\t var num = this.pop(this[this.length - 2]) - this.pop(this[this.length - 1]); 
 
\t console.log(num); // logs 1 
 
\t this.push(num); 
 
};

+2

구현 세부 정보는 확실하지 않지만 'var num = this.pop (this [this.length - 1]) - this.pop (this [this.length - 2]); – Mchl

+1

'this [...]'를 로깅하지만'this.pop (this [...])'의 * 반환 값 *을 빼는 것에주의하십시오. 그러면 this.pop()이 정확히 무엇을 반환합니까? 그것은 무엇을합니까? 왜 그곳에 있습니까? 뭔가의'길이'를 돌려주는 것처럼 보입니다. –

+5

일반적으로 ['pop'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop)는 배열의 마지막 항목을 제거하고 그 값을 반환하고 doesn을 반환합니다 어떤 주장도하지 마라. 귀하의 구현은 그것을 전혀 변경합니까? –

답변

0

당신이 pop를 사용하는 방법에 문제가있다. pop은 배열에서 마지막 항목을 제거하고 마지막 항목을 반환합니다.

RPNCalculator.prototype.minus = function() { 
    let lastName = this.pop(); 
    let firstNum = this.pop(); 
    this.push(firstNum - lastNum); 
};