테스트 사이트 - 개발 중인 베타 버전입니다

or 조건문을 줄이는 방법 채택완료

도레미 2년 전 조회 4,123

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

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

 

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

  코드들......

}

 

댓글을 작성하려면 로그인이 필요합니다.

답변 7개

채택된 답변
+20 포인트
세크티
2년 전

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

  코드들..

}

이렇게해보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

도레미
2년 전
감사합니다...^^
역시나 간단한 방법이 있었군요...ㅎ
도레미
2년 전
어? 그런데 따라 해보니 in_array() 를 알지 못하네요??
이 함수 정말 있는 건가요??

댓글을 작성하려면 로그인이 필요합니다.

전 이렇게 합니다

switch(menu){

case 10:

case 11:

Do something;

}

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

에고

 

break; 해당코드; 

 

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

해당코드;

break;

 

</p>

<p><script>

menu = 31;

menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];

for (i of menus) if (menu == i) {

    해당코드;

    break;

}

</script></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

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

 

</p>

<p><script></p>

<p>menu = 51;</p>

<p>if (["10","23","21","33","31","51","28","29","25"].includes(String(menu))){

    해당코드;

}</p>

<p></script></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

도레미
2년 전
해보니 다행히 숫자형으로 해도 잘 작동하네요...
메뉴 번호가 모두 2자리 숫자라 별 문제는 없을것 같아요.
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

뒷북입니다.

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

 

</p>

<p><script></p>

<p>menu = 31;</p>

<p>menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];

for (i of menus) if (menu == i) {

    break;

    해당코드;

}</p>

<p></script></p>

<p>

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

도레미
2년 전
역시 비타주리님..
어쩐지 in_array 를 못 알아 듣더라구요...ㅎ

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

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

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

댓글을 작성하려면 로그인이 필요합니다.

</p>

<p><script></p>

<p>var menu = 23;</p>

<p>var menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];</p>

<p>if(menus.indexOf(menu) > -1) {</p>

<p>   ... code ...</p>

<p>}</p>

<p></script></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

도레미
2년 전
감사합니다...
여기가 오히려 정답이었는데 이미 채택해 버려서...ㅎ
쟁반짜장
2년 전
[code]
<script>
menu = 21;
menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];
menus.filter((v) => {
if(menu === v) {
... code ...
}
});
[/code]

댓글을 작성하려면 로그인이 필요합니다.

 

</p>

<p>$data = [10, 23, 21, 33, 31, 51, 28, 29, 25];</p>

<p>if (in_array($menu, $data)) {</p>

<p>.......

}</p>

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

도레미
2년 전
감사합니다. 그런데 in_array 가 자바스크립함수가 아니네요..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인