구조 분해 할당

배열 또는 객체의 값을 말 그대로 분해해 개별 변수에 즉시 할당하는 것.

배열 구조 분해 할당  : 배열의 요소를 개별 변수에 할당하는 방법

기본 사용법 ▼

const array = [1, 2, 3, 4, 5]

let [first, second, third, fourth ,fifth] = array;
console.log(first); // 1
console.log(second); // 2
console.log(third); // 3
console.log(fourth); // 4
console.log(fifth); // 5

 

일부 요소 건너뛰기 ▼

쉼표를 사용하여 배열의 일부 요소 건너뛰기

const array = [1, 2, 3, 4, 5]

let [first, , , ,fifth] = array;
console.log(first); // 1
console.log(fifth); // 5

 

기본값 설정 ▼

배열의 요소가 undefined인 경우 기본값을 설정할 수 있다.

- 기본값을 사용하는 것은 a, e

a : 명시적으로 undefined 지정

e : 배열의 길이를 넘어서서 구조 분해 할당됐으므로 undefined 평가됨.

const [a=1, b=1, c=1, d=1, e=1] = [undefined, null, 0, '']
a // 1
b //null 
c // 0
d // ''
e // 1

 

Rest 패턴 ▼

나머지 요소를 하나의 배열로 모아서 할당

const array = [1, 2, 3, 4, 5]

let [first, second, ...arrayRest] = array;
console.log(first); // 1
console.log(second); // 2
console.log(arrayRest); // [3,4,5]

 

객체 구조 분해 할당 : 객체에서 값을 꺼내온 뒤 할당하는 것

배열 구조 분해 할당과 달리, 객체는 객체 내부 이름으로 꺼내온다는 것

const obj = {a:1, b:1, c:1, d:1, e:1}

const { a, b, c, ...objRest} = obj
// a 1
// b 1
// c 1
// objRest = {d:1, e:1}

 

새로운 이름으로 재할당, 배열과 마찬가지로 기본값을 주는 것도 가능하다.


전개 구문

배열이나 객체, 문자열과 같이 순회할 수 있는 값에 대해 말 그대로 전개해 간결하게 사용할 수 있는 구문

 

배열의 전개 구문

const arr1 = ['a', 'b']
const arr2 = [...arr1, 'c', 'd', 'e'] // ['a', 'b', 'c', 'd', 'e']

배열 내부에서 ...배열을 사용하면 해당 배열을 마치 전개하는 것처럼 선언하고 활용 가능

기존 배열에 영향을 미치지 않고 배열을 복사하는 것도 가능하다.

 

객체의 전개 구문

const obj1 = { a:1, b:2 }
const obj2 = { c:3, d:4 }

const newObj = { ...obj1, ...obj2 }
// { a:1, b:2, c:3, d:4 }

 

객체 전개 구문에 있어서 순서가 중요하다. 순서의 차이로 인해 값이 덮여쓰여질 수 있기 때문이다.

const obj = { a:1, b:2, c:3, d:4 }

const newObj = { ...obj, c:10 }
// { a:1, b:2, c:10, d:4 }

객체 전개 구문 이후에 c:10으로 값을 덮어씀.

const obj = { a:1, b:2, c:3, d:4 }

const newObj = { c:10, ...obj}
// { a:1, b:2, c:3, d:4 }

객체 전개 구문이 c:10의 값을 3으로 덮어씀.


객체 초기자

객체에 넣고자 하는 키와 값을 가지고 있는 변수가 존재한다면 해당 값을 간결하게 넣어줄 수 있는 방식이다.

const a = 1
const b = 2

const obj = {
	a, b
}
// { a:1, b:2 }

Array 프로토타입의 메서드 : map, filter, reduce, forEach

Array.prototype.map

인수로 전달받은 배열과 똑같은 길이의 새로운 배열을 반환하는 메서드

배열의 각 아이템을 순회하면서 각 아이템을 콜백으로 연산한 결과로 구성된 새로운 배열을 만들 수 있다.

const arr = [1, 2, 3, 4, 5]
const dbArr = arr.map((item) => item * 2)
// [2, 4, 6, 8, 10]

 

Array.prototype.filter

말 그대로 필터링 역할을 하는 메서드, 어떠한 조건을 만족하는 새로운 배열을 반환할 때 주로 사용

인수로 받는 콜백함수에서 truthy 조건을 만족하는 경우에만 해당 원소를 반환한다.

const arr = [1, 2, 3, 4, 5]
const evenArr = arr.filter((item) => item % 2 === 0)
// [2, 4]

 

Array.prototype.reduce

콜백 함수와 함께 초깃값을 추가로 인수를 받는데, 이 초깃값에 따라 배열이나 객체, 또는 그 외의 다른 무언가를 반환할 수 있는 메서드

콜백 함수를 실행하고, 이를 초깃값에 누적해 결과를 반환

const arr = [1, 2, 3, 4, 5]
const sum = arr.reduce((result, item) => {
	return result + item
}, 0)
// 15

0 > 결과를 누적할 초깃값

콜백 함수의

첫 번째 인수 : 앞서 선언한 초깃값의 현재

두 번째 인수 : 현재 배열의 아이템

>> 콜백의 반환값을 계속 초깃값에 누적하면서 새로운 값을 만드는 것.

 

Array.prototype.forEach

콜백 함수를 받아 배열을 순회하면서 단순히 그 콜백 함수를 실행하는 메서드

const arr = [1, 2, 3]

arr.forEach((item) => console.log(item))
// 1, 2, 3

 

※ 주의할 점

1. 반환 값이 없다. 단순히  그 콜백 함수를 실행할 뿐이다. 반환 값은 undefined로 의미가 없다.

2. 메서드가 실행되고 에러를 던지거나, 프로세스를 종료하지 않는 이상 이를 멈출 수 없다.


삼항 조건 연산자

3개의 피연산자를 취할 수 있는 문법

조건문 ? 참일 때 값 : 거짓일 때 값

조건부 렌더링 : if 조건문을 간단하게 쓸 수 있다는 점에서 리액트에서 자주 쓰인다.

※ 간단하지만 중첩해서 사용하면 가독성이 떨어지기 때문에 가급적이면 중첩해서 쓰지는 말자

+ Recent posts