반응형
[js] iterable객체의 반복문, if문, switch문의 코드 최적화 방법 (클린코드)
* iterable 객체란?
2023.02.18 - [언어/Javascript,TypeScript] - [js] iterable 객체, Array.from
[js] iterable 객체, Array.from
iterable(반복 가능한) 객체, Array.from 메소드 iterable(반복 가능한) 객체란? 1. 반복 가능한(iterable, 이터러블) 객체는 배열을 일반화한 객체이다. 2. for..of 반복문을 적용할 때 Symbol.iterator를 호출하는
kfdd6630.tistory.com
1. iterable객체의 반복문
배열과 객체의 내부에 접근할 때 단순 for문을 사용하는 것을 지양하고 자바스크립트에 기본 내장되어 있는 for..of, or..in문을 사용하면 명확하게 코드를 짤 수 있다.
1-1. 배열은 for..of 문을 사용한다.
const arr = ['A', 'B', 'C', 'D', 'E'];
for (let i = 0; i < arr.length; i++) {
const element = arr[i];
console.log('1', element)
}
// 위 코드를 아래와 같이 변경해도 동일하게 동작한다.
for (const element of arr) {
console.log('2', element)
}
출력값
1 A
1 B
1 C
1 D
1 E
2 A
2 B
2 C
2 D
2 E
1-2. 객체는 for..in 문을 사용한다.
const obj = {
KEY1: "VALUE1",
KEY2: "VALUE2",
KEY3: "VALUE3",
};
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const value = obj[key];
console.log(value);
}
// 위 코드를 아래와 같이 변경해도 동일하게 동작한다.
for (const key in obj) {
const value = obj[key];
console.log(value);
}
출력값
1 = VALUE1
1 = VALUE2
1 = VALUE3
2 = VALUE1
2 = VALUE2
2 = VALUE3
2. switch문, if문과 같은 조건문
switch문이나 조건문 if문과 || 연산자를 조합해서 사용할 수도 있다.
하지만 switch문은 json형태의 객체로 구성하여 접근하는 방식, if문은 배열과 include와 같은 함수를 사용하여 아래와 같이 구현하는것이 명확하게 코드를 짤 수 있다.
2-1 switch 문(오늘 요일의 숫자(0~6) 비교해서 문자열로 출력)
const dayNumber = new Date().getDay();
let day;
switch (dayNumber) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
console.log('1 = ', day);
// 위 코드를 아래와 같이 변경해도 동일하게 동작한다.
const days = {
0: "Sunday",
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday",
};
day = days[dayNumber];
console.log('2 = ', day);
출력값 (글 발행일 기준, 화요일)
1 = Tuesday
2 = Tuesday
2-2 if 문(문자열 동등비교)
const isFruit = (fruit) => {
if (
fruit === "apple" ||
fruit === "banana" ||
fruit === "grape" ||
fruit === "lemon" ||
fruit === "orange"
) {
return true;
}
return false;
};
// 위 코드를 아래와 같이 변경해도 동일하게 동작한다.
const isFruit2= (fruit) =>
["apple", "banana", "grape", "lemon", "orange"].includes(fruit);
console.log(isFruit("apple"));
console.log(isFruit2("apple"));
출력값
true
true
반응형
'언어 > Javascript, Typescript' 카테고리의 다른 글
[js] 콜백함수(callback) (0) | 2023.03.21 |
---|---|
[js] 코드 최적화 - falsy값, 삼항 연산자, fallback값(nullish값 체크) (0) | 2023.03.12 |
[js, ts] 함수를 파일로 따로 빼서 정리하는 방법 (0) | 2023.03.05 |
[js] 무작위 날짜 생성하기, 무작위 숫자 생성하기 (0) | 2023.02.21 |
[js] iterable 객체, Array.from (0) | 2023.02.18 |
댓글