
배열, 요소, 비파괴적 처리, 파괴적 처리
배열 array은 여러 개의 변수를 한 번에 선언해 다룰 수 있는 자료형입니다. 배열은 대괄호를 사용해 생성하고 내부의 값을 쉼표로 구분해 입력합니다. 배열 내부에 들어 있는 값을 요소라고 합니다.
배열 만들기
배열[인덱스]
const numbers = [273, 52, 103, 32];
numbers[1]
> 52
여기서 배열 요소 개수 확인하기
배열.length
numbers.length
> 4
numbers[numbers.length - 1]
> 32
배열 뒷부분에 요소 추가하기
배열. push(요소)
number.push('1997');
> 5
numbers
> [273, 52, 103, 32, 1997]
배열 요소 제거하기
배열의 특정 인덱스에 있는 요소를 제거할 때는 splice() 메소드를 사용합니다.
splice는 접합이라는 의미입니다.

배열.splice(인덱스, 제거할 요소의 개수)
const itemsA = ['사과', '배', '바나나'];
itemsA.splice(2,1);
> 바나나
itemsA;
> (2) ['사과', '배']
값으로 요소 제거하기
const 인덱스 = 배열.indexOf(요소)
배열.splice(인덱스, 1)
여기서 indexOf() 메소드와 splice() 메소드는 배열 내부 요소를 하나만 제거할 수 있습니다. 배열 내부에서 특정 값을 가진 요소를 모두 제거하고 싶을 때는 반복문을 사용하거나 fillter() 메소드를 사용해야 합니다.
배열의 특정 위치에 요소 추가하기
배열.splice(인덱스, 0, 요소)
추가할 때는 splice() 메소드의 2번째 매개변수에 0을 입력하면 splice() 메소드는 아무 것도 제거하지 않으며, 3번째 매개변수에 추가하고 싶은 요소를 입력합니다.
비파괴적 처리란 처리 후에 원본 내용이 변경되지 않는 처리다. (ex.새로운 상수 생성)
파괴적 처리란 처리 후에 원본 내용이 변경이 되는 처리다. (ex. 배열에 요소 추가)
현대에서는 메모리가 충분하므로 대부분 비파괴적 처리를 한다.
const array = [1, 2, 3, 4];
console.log(array.length);
console.log(array.push(5));
> 4
>[1,2,3,4,5]가 아닌 5array.push(5)를 하면 [1, 2, 3, 4, 5]를 출력한다고 생각할 수 있지만,
그렇지 않고 그냥 추가된 값을 출력합니다. “사과를 사과라고 하는 이유
는 그냥 그렇게 약속해서 그렇다”라고 할 수밖에 없는 것처럼 “그냥 그렇
게 설계되어 있다”라고 답할 수밖에 없는 내용입니다
for in 반복문, for of 반복문,for 반복문, while 반복문, break, continue
컴퓨터에게 반복 작업을 시키는 것은 간단하다. 우리에게는 복붙이 있다.
하지만 1000번, 10000번 혹은 무한히 반복하고 싶을 때는 무리가 있다.
그래서 우리는 반복문이 필요하다.
배열과 함께 사용할 수 있는 반복문은 for in 반복문이다. for in 반복문은 배열 요소를 하나하나 꺼내서 특정 문장을 실행할 때 사용한다.
for (const 반복 변수 in 배열 또는 객체) { 문장 }
const todos = ['쇼핑', '운동', '공부'];
for (const i in todos) {
console.log(`${i}번째 할 일: ${todos[i]}`)
};
for in 반복문은 구문 자체로 코드의 양이 어느 정도 있어서 힘들 수 있다.
그래서 for of 반복문과 for 반복문을 활용하는 것이 좋다.
요소의 값을 반복할 때 안정적으로 사용할 수 있다.
for (const 반복 변수 of 배열 또는 객체) { 문장 }
const todos = ['쇼핑', '운동', '공부'];
for (const todo of todos) {
console.log(`오늘 할 일: ${todo}`)
};
일반적으로 for 반복문은 특정 횟수만큼 반복하고 싶을 때 사용한다.
for (let i=0; i<반복횟수; i++) { 문장 };
for (let i=0; i<4; i++) {
console.log(`${i}번째 반복입니다.`);
};
> 0번째 반복입니다.
> 1번째 반복입니다.
> 2번째 반복입니다.
> 3번째 반복입니다.
> 4번째 반복입니다.
1부터 n까지 다 더하기
let output = 0;
for (let i=1; i<=100; i++) {
output +=i
};
console.log(`1~100까지 숫자를 모두 더하면 ${output}입니다.`);
> 5050
for 반복문은 배열과 조합할 수 있습니다. 보통 배열의 length 속성만큼 반복을 돌리는 형태로 사용합니다. (많이 쓰이니 형태이니 꼭 기억)
const todos = ['쇼핑', '운동', '공부'];
for (let i=0; i<todos.length; i++) {
console.log(`${i}번째 해야 할 일은 ${todos[i]}입니다.`);
};
while (불 표현식) { 문장 }
while 반복문은 if 조건문과 형태가 매우 비슷한 반복문이다. if 조건문과 다른 점은 문장을 한 번만 실행하고 끝나는 것이 아니라 불 표현식이 true이면 계속해서 문장을 실행한다는 것이다.
조건식이 true이고 변하지 않는다면 무한 루프(infinite loop)를 생성할 수 있다.
while 반복문과 for 반복문은 서로 대체해서 사용할 수 있다.
for 반복문은 코드를 간결하게 구현할 때 좋고, while 반복문은 조건식이 비중이 클 때 사용하면 좋다.
switch 조건문이나 반복문을 벗어날 때 사용한다.
while 반복문은 조건이 항상 참이므로 무한 반복합니다. 여기서 break 키워드가 필요하다.
while (true) { } break

continue 키워드는 반복문 안의 반복 작업을 멈추고 반복문의 처음으로 돌아가 다음 밥복 작업을 진행합니다.
예제) 피라미드 만들기
let output = '';
for (let i=1; i<10; i++) {
for (let j=0; j<i; j++) {
output += '*';
}
output+='\n';
}
console.log(output);