클린코드 자바스크립트 5-3 배열 다루기(배열 메소드 체이닝 활용, map vs forEach, continue&break)
Clean Code JS 강좌는 여러 절로 구성되어 있습니다.
- 클린코드 자바스크립트 1-1 변수 다루기(let & const 사용, function scope & block scope)
- 클린코드 자바스크립트 1-2 변수 다루기(전역 공간 사용 최소화,임시 변수 제거하기)
- 클린코드 자바스크립트 1-3 변수 다루기(호이스팅)
- 클린코드 자바스크립트 2-1 타입 다루기(타입 검사)
- 클린코드 자바스크립트 2-2 타입 다루기(undefined & null, eqeq 줄이기)
- 클린코드 자바스크립트 2-3 타입 다루기(형변환 주의하기, isNaN)
- 클린코드 자바스크립트 3-1 경계 다루기(min-max,begin-end,first-last,접두사와 접미사, 매개변수 순서가 경계)
- 클린코드 자바스크립트 4-1 분기 다루기(값식문, 삼항 연산자)
- 클린코드 자바스크립트 4-2 분기 다루기(truthy & falsy, 단락 회로 평가)
- 클린코드 자바스크립트 4-3 분기 다루기(else if & else 피하기, Early Return, Default case 고려하기)
- 클린코드 자바스크립트 4-4 분기 다루기(Default case 고려하기, Nullish coalescing operator, 드모르간 법칙)
- 클린코드 자바스크립트 5-1 배열 다루기(JS의 배열은 객체다, Array.length, 배열 요소에 접근하기)
- 클린코드 자바스크립트 5-2 배열 다루기(유사 배열 객체, 불변성, for문 배열 고차 함수로 리팩토링)
- 클린코드 자바스크립트 5-3 배열 다루기(배열 메소드 체이닝 활용, map vs forEach, continue&break)
- 클린코드 자바스크립트 6-1 객체 다루기(Object Destructuring, Object.freeze)
- 클린코드 자바스크립트 6-2 객체 다루기(Prototype 조작 지양하기, hasOwnProperty, 직접 접근 지양하기)
- 클린코드 자바스크립트 7-1 함수 다루기([함수,메서드,생성자], argument & parameter,복잡한 인자 관리하기)
- 클린코드 자바스크립트 7-2 함수 다루기(default value, Rest Parameters, void & return, 화살표 함수)
- 클린코드 자바스크립트 7-3 함수 다루기(Callback Function, 순수 함수, Closure)
배열 다루기 😎
배열 메소드 체이닝 활용👍
- 요구사항이 많아질 때 배열 메소드 체이닝을 통해 클린코드를 구성할 수 있다.
const price = ["2000", "3000", "4000", "1000", "5000"];
const suffixWon = (price) => price + "원";
const isOverOneThousand = (price) => Number(price) > 1000;
const ascendingList = (a, b) => a - b;
function getWonPrice(priceList) {
return priceList
.filter(isOverOneThousand) // filter 원하는 조건에 맞는 배열 리스트 만드기
.sort(ascendingList) // sort 정렬
.map(suffixWon); // 배열 요소들을 다시 정리
}
const result = getWonPrice(price);
map vs forEach👍
return 이 있느냐 없느냐?
- forEach
- 요소마다 함수를 실행시켜주는 역할
- forEach 반환값 : undefined
- map
- 함수 실행을 통해 배열 조작을 하는 역할
const prices = ["1000","2000", "3000", "4000" "5000"];
const newPricesForEach = prices.forEach(function (price) {
return price+'원';
})
const newPricesMap = prices.map(function (price) {
return price + '원'
})
console.log(newPricesForEach) // undefined
console.log(newPricesMap) // ["1000원","2000원", "3000원", "4000원" "5000원"]
- 아래와 같을 때는 forEach가 더 유효하다.
const prices = ["1000","2000", "3000", "4000" "5000"];
const newPricesForEach = prices.forEach(function (price) {
console.log(price+'원')
})
const newPricesMap = prices.map(function (price) {
console.log(price+'원')
})
continue & break👍
- forEach, map는 continue,break > Syntax Error 가 발생한다.
- try catch 활용
- for of, for in 활용
- Array.prototype.every, some, find, findIndex … 배열 요소를 판별 함수에 전달하고 그 결과의 참/거짓 여부에 따라 반복 여부를 결정
// 에러 발생
const orders = ['first','second','third'];
orders.forEach(function(order) {
if(order==='second') {
continue;
break;
}
console.log(order);
})
try {
orders.forEach(function(order) {
if(order==='second') {
continue;
break;
}
console.log(order);
})
} catch(e) {
}
for(const iterator of object) {
}
for(const key in object) {
}