or 조건문을 줄이는 방법

or 조건문을 줄이는 방법

QA

or 조건문을 줄이는 방법

본문

자바스크립트 조건문에서 or 가 많을 때 이걸 간단하게 줄이는 방법 없을까요?

아래와 조건문이 있는데... 뭔가 있을것 같은데 못찾겠네요...ㅠ

 

if (menu==10 || menu==23 || menu==21 || menu==33 || menu==31 || menu==51 || menu==28 || menu==29 || menu==25) {

  코드들......

}

 

이 질문에 댓글 쓰기 :

답변 7

if (in_array(menu, array(10,23,21,33,31,51,28,29,25))){

  코드들..

}

이렇게해보세요


<script>
var menu = 23;
var menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];
if(menus.indexOf(menu) > -1) {
   ... code ...
}
</script>

 


$data = [10, 23, 21, 33, 31, 51, 28, 29, 25];
if (in_array($menu, $data)) {
.......
}

같은 내용인데 이렇게 하면 관리가 편합니다.

뒷북입니다.

세크티님 답변은 자바스크립트가 아니라 php 이고 자바스크립트에서 php 의 in_array 기능을 만들려면 용을 좀 써야 합니다. 여러가지가 생각이 나긴 하지만 가장 첫번째로 떠오른 코드가...

 


<script>
menu = 31;
menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];
for (i of menus) if (menu == i) {
    break;
    해당코드;
}
</script>

 

쟁반짜장님 코드도 효과적이긴 하지만 menu = 2 일 경우에도 true 를 리턴하기 때문에 좀 불완전하구요.

역시 비타주리님..
어쩐지 in_array 를 못 알아 듣더라구요...ㅎ

그래도 응용으로 검색해서 아래와 같이 찾았습니다.

if ([10,23,21,33,31,51,28,29,25].includes(menu)){
  코드들..
}

그런데 이것도 menu=1 이나 menu=2 도 true 가 될까요?  숫자인데??

menu 를 문자형으로 바꾸면 되지 않을까요?

이것도 생각했던 코드 중 하나인데 데이터타입을 바꾸는 게 귀찮아서 처음처럼 짰지요.ㅋ

 


<script>
menu = 51;
if (["10","23","21","33","31","51","28","29","25"].includes(String(menu))){
    해당코드;
}
</script>

에고

 

break;
해당코드; 

 

가 아니라 순번이 바뀌었네요.^^ 아래처럼... 덜렁이는 수가 없습니다.ㅜㅠ


해당코드;

break;

 


<script>
menu = 31;
menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];
for (i of menus) if (menu == i) {
    해당코드;
    break;
}
</script>
답변을 작성하시기 전에 로그인 해주세요.
전체 2,661
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT