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 를 리턴하기 때문에 좀 불완전하구요.
!-->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>
전 이렇게 합니다
switch(menu){
case 10:
case 11:
Do something;
}
답변을 작성하시기 전에 로그인 해주세요.