2016-09-03 6 views
-3

switch 문을 사용하여 20 개가 넘는 케이스를 처리하고 있습니다. 그것은이 아래에 주어진 예컨대위한 긴 switch 문을 최소화 할 수있는 방법 :switch 문을 최소화하는 방법은 무엇입니까?

switch (something) { 

    case 1: 
     doX(); 
    break; 

    case 2: 
     doY(); 
    break; 

    case 3: 
     doN(); 
    break; 

    // And so on... 

} 

편집 : 모든으로

내가이 자바 스크립트 질문 명확히 할 필요가 요구된다.

+2

처럼뿐만 아니라 일반 객체에 의해 구현 될 수있다. 당신이 준 의사 코드에만 근거하여, 아니오. [mcve]를 올리면 어쩌면. –

+3

이렇게하는 방법은 여러 가지가 있습니다. 더 많은 문맥 (즉, 더 많은 코드)이 없으면 적절한 답을 제공하기가 어려울 것입니다. – fge

+0

안내를 위해 @EdCottrell에게 감사드립니다. 실제 switch 문이 길기 때문에 실제로는 의사 코드를 사용했습니다. 나는 질문을 복잡하게했을 것이라고 생각했다. –

답변

0

의사 코드 만 입력하십시오. 내가 더 잘 인도 할 수 있도록 실제 코드를 제공해야합니다. 어쨌든 긴 swith 문에 다음과 같은 짧은 형식을 사용할 수 있습니다.

var cases = { 
    1: doX, 
    2: doY, 
    3: doN 
    //......................cases from 4 to 19 
    20: doZ 
}; 
if (cases[something]) { 
    cases[something](); 
} 

희망이 있습니다.

+1

감사합니다. 정확히 내가 찾고있는 것이 었습니다. –

+1

@ toweddeji-2389 이것은 javacript가 아닌 java 인 것으로 보이는데, 어떤 언어로 대답하겠습니까? –

0

작업이 동일한 경우가있을 수 있습니다. 예를 들어 두 경우 1 케이스 (10)와 동일한 방법 doX()가 발생하는 경우,이 작업을 수행 할 수 있습니다 :

또한
switch (something) { 

    case 1: 
    case 10: 
     doX(); 
    break; 

    //... 

} 

, 당신은 당신이 경우에 같은 많은 경우에 할 것이다 일반적인 작업이있는 경우 - 12 13, 14, 15 및 16, doA()이 실행됩니다. default 케이스로 지정하십시오. 많은 경우를 줄여줍니다.

switch (something) { 

    // for case 12, 13, 14, 15, 16 
    default: 
     doA(); 
    break; 

} 
+0

도움 주셔서 감사합니다. 사실 모든 사례는 다릅니다. –

0

ES6 맵 기능을 사용하여 함수 맵을 작성한 다음 동적 키 값으로 호출하면됩니다.

var myMap = new Map(), 
 
     doX = n => console.log(n), 
 
     doY = n => console.log(n*2), 
 
     doN = n => console.log(n/2), 
 
something = 2; 
 
     
 
myMap.set(1,doX) 
 
    .set(2,doY) 
 
    .set(3,doN); 
 
myMap.get(something)(4);

같은

당신이 실제로 무슨 일을하는지에 전적으로 달려

var myMap = {}, 
 
     doX = n => console.log(n), 
 
     doY = n => console.log(n*2), 
 
     doN = n => console.log(n/2), 
 
something = 3; 
 
     
 
myMap[1] = doX; 
 
myMap[2] = doY; 
 
myMap[3] = doN; 
 
myMap[something](4);

+0

위대한 조언을 주셔서 감사합니다. –

+0

이 질문은 자바로 태그가 붙어있는 동안 자바 스크립트입니다 –

+0

@Nicolas Filotto 와우 .. 나는이 질문이 자바 스크립트 쿼리에서 발생했다고 맹세 할 수 있습니다. 어쨌든 그것을 삭제해야합니다. – Redu

관련 문제