2014-12-10 5 views
0

현재 javascript에 다음 배열이 있습니다.자바 스크립트 배열에서 연산자에 액세스

array = [2, 3, "+"] 

내 목표 ([1] 어레이) (어레이 [2])의 요소 (1) (어레이 소자 (3)에 어떤 조작을 수행 어레이의 두 번째 요소를 수행하는 코드를 작성하는 것이다 [0]).

예를 들어 코드는 다음을 수행 할 수 있어야합니다.

[2,3,"+"] 출력해야 5 (3 + 2)

[2,4,"*"] 출력해야 8 (4 * 2)

현재

I과 같이 "4 * 2", "3 + 2"를 반환 할 것이다 코드를 작성 문자열이지만 작업을 수행하지는 않습니다.

도움이 될 것입니다.

답변

3

당신 당신이 피연산자 아칸소 확인 있는지 확인 eval()를 사용하려면 eval() 아니라, 당신은 같은 것을 사용하지 않는 이유 웜의 캔을 여는 것보다 ...

var operators = { 
    '+': function(a, b) { return a + b; }, 
    '*': function(a, b) { return a * b; } 
}; 

var result = operators[array[2]](array[0], array[1]); 

를 사용 e 만 숫자이고 운영자는 유효한 운영자의 허용 목록입니다. 특히 사용자 입력을 사용하는 경우.

1

연산자와 대응 방법의지도를 작성하고 피연산자와 그 메소드를 호출하지만, 당신은 신속하고 더러운 솔루션을 원하는 경우 단지 (위험 입력이 사용자로부터입니다) 평가 할

> eval('2+3') 
5 
0

아래 코드와 같은 것은 구현하기 쉽습니다.

var result; 
var s; 

switch (array[2]) { 
    case "+": 
     result = array[0] + array[1]; 
     s = result + "(" + array[0] + " " + array[2] + " " + array[1] + ")"; 
     break; 
    case "-": 
     result = array[0] - array[1]; 
     s = result + "(" + array[0] + " " + array[2] + " " + array[1] + ")"; 
     break; 
    ... 
} 
0

다음과 같이 표현식 사용 eval 함수를 실행합니다.

eval(array[1] + array[2] + array[0]); 
관련 문제