보통 단순히 범위 루프를 돌고 싶다면 다음과 같이 코드를 작성한다.
let sum = 0;
for (let i = 5; i < 10; i += 1) {
sum += i;
}
만약 범위 루프를 함수형 프로그래밍 방식으로 사용하고 싶다면 배열을 생성해서 사용할 수 있다.
const sum = Array
.from(new Array(5), (_, k) => k + 5)
.reduce((acc, cur) => acc + cur, 0);
값만 매겨변수로 받을때
Array.from({length: 5}, x => x);
// output = [undefined, undefined, undefined, undefined, undefined]
값과 인덱스를 매개변수로 받을때
Array.from({length: 5}, (value, index) => index);
// output = [0, 1, 2, 3, 4]
각요소에 대해 주어신 리듀서 함수를 실행 하고, 하나의 결과값을 반환한다.
const array1 = [1, 2, 3, 4];
const sumWithInitial = array1.reduce(
(acc, cur) => acc + cur,
initialValue
);
console.log(sumWithInitial);
// output : 10
const name = partitipantName || 'Guest';
// partitipantName이 0, undefined, 빈 문자열, null일 경우 'Guest'로 값이 할당된다.
// flag가 true일 경우에만 실행
const makeCompany = (showAddress) => {
return {
name: 'A',
...showAddress && { address: 'seoul' }
}
};
console.log(makeCompany(false));
// { name: 'A' }
console.log(makeCompany(true));
// { name: 'A', adress: 'seoul' }
ES6에 추가된 기능으로 객체의 키를 동적으로 생성 가능해졌다.
연관된 데이터를 연속적인 형태로 구성된 구조를 가진다, 원소는 순서대로 index를 가진다.
고정된 크기를 가진다.
배열의 추가와 삭제는 O(n) 선형시간이 걸린다 따라서 추가와 삭제가 반복되는 로직에서 배열 사용을 권장하지 않는다. 베열은 탐색이 많은경우 유리하다.
for문
최신 JS 에서는
for of문 사용 추천
: 조금더 직관적이다.
for (const item of arr) {
console.log(item)
}
//output : 각 요소가 순차적으로 나온다.
배열은 객체와 타입이 동일하다. 따라서 배열을 객체처럼 사용가능하다.
배열과 동일
obj["key"] = "value";
: obj에 key : value 추가
obj.key = "value";
: 위와 동일
delete obj.key;
: 해당 key값 삭제
for in문
for (const key in obj) {
console.log(key, obj[key]);
}