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

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

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

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

  코드들......

}

답변 7개

채택된 답변
+20 포인트

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

  코드들..

}

이렇게해보세요

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

답변에 대한 댓글 2개

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

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

전 이렇게 합니다

switch(menu){

case 10:

case 11:

Do something;

}

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

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

에고

break;
해당코드; 

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


해당코드;

break;

Copy
<script>
menu = 31;
menus = [10, 23, 21, 33, 31, 51, 28, 29, 25];
for (i of menus) if (menu == i) {
    해당코드;
    break;
}
</script>
로그인 후 평가할 수 있습니다

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

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

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

Copy
<script>

menu = 51;

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

</script>
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

뒷북입니다.

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

Copy
<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 를 리턴하기 때문에 좀 불완전하구요.

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

답변에 대한 댓글 1개

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

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

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

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

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

Copy
<script>

var menu = 23;

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

if(menus.indexOf(menu) > -1) {

   ... code ...

}

</script>
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

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

Copy
$data = [10, 23, 21, 33, 31, 51, 28, 29, 25];

if (in_array($menu, $data)) {

.......
}

같은 내용인데 이렇게 하면 관리가 편합니다.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다. 그런데 in_array 가 자바스크립함수가 아니네요..

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

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

로그인
🐛 버그신고