- 배열이 필요한 이유와 선언하는 방법
- (다차원)배열의 값에 접근하고, 추가, 수정, 삭제하는 방법
- 자주 사용하는 배열 메서드의 종류와 사용하는 방법
- 반복문이 필요한 이유와 사용하는 방법
- 배열과 반복문을 함께 자주 사용하는 이유
- 배열과 반복문을 활용해서 배열의 값을 조작하는 방법
배열은 여러 개의 변수를 한 번에 선언해 다룰 수 있는 자료형이다. 변수가 필요한 이유와 마찬가지로, 배열이 필요한 이유도 결국 효율성(편의성)때문이라고 생각한다. 숫자, 문자열, 불과 같은 자료는 하나의 값만 가질 수 있어서 여러 개의 자료를 저장하려면 변수를 여러 개 선언해야 하는 불편함이 생길 수 있다.
코딩을 배우기 이전의 나
let num1 = 7;
let num2 = 2;
let num3 = 4;
let num4 = 3;
let num5 = 5;
let num6 = 2;
let num7 = 4;
let num8 = 9;
let num9 = 2;
let num10 = 3;
let sum = num1 + num2 + num3 + num4 + num5 +
num6 + num7 + num8 + num9 + num10;
console.log(sum)
// 41
코딩을 배운 이후의 나
let num = [ 7, 2, 4, 3, 5, 2, 4, 9, 2, 3 ];
let sum = 0;
for (i=0; i < num.length; i++) {
sum += num[i]
}
console.log(sum)
// 41
① let arr1 = []
;
② let arr2 = new Array()
배열[인덱스]
let arr = [
[1,2,3],
[4,5,6],
[7,8,9],
[[10,11,12], 13, 14]
];
arr[3]; // equals [[10,11,12], 13, 14]
arr[3][0]; // equals [10,11,12]
arr[3][0][1]; // equals 11
배열.push(요소)
: 배열 맨 뒤
에 순서대로 추가됨, 나중에 추가된 요소가 맨 마지막.배열.unshift(요소)
: 맨 앞
에 요소 추가배열[인덱스] = '값'
: 인덱스를 사용해서 원하는 순서에 추가할 수 있고, 순서를 건너뛰어도 가능. 다만, 기존 인덱스랑 바꾸는 경우 추가되는 것이 아니라, 대체되는 것배열[배열.length] = '값'
: 배열 마지막 인덱스에 추가배열.splice(인덱스, 삭제할 개수, 요소)
배열[인덱스] = '값'
: 이 경우 기존에 있던 값은 삭제되고 새로운 값이 채워짐배열.pop()
: 맨 뒤
에 있는 요소 제거배열.shift()
: 맨 앞
에 있는 요소 제거배열.slice(시작 인덱스, [종료 인덱스])
배열.splice(인덱스, 인덱스부터 제거할 요소의 개수, 추가할 요소N)
배열.splice(배열.indexOf(요소), 1)
(내가 직접 써본 메소드)
arr.join(separator)
: 배열의 모든 요소를 연결해서 하나의 문자열로. 구분자란 , / | " 등str.split(separator)
: string을 array로. 구분자arr.reverse()
: 원본 배열의 순서를 거꾸로 변환배열.splice(인덱스, 삭제할 개수, 요소)
배열.slice(시작 인덱스, [종료 인덱스])
filter()
: 머리를 터지게 했던 includes()
: 배열에 value가 있으면 true를, 그렇지 않으면 false를 반환함맨 앞에 올 배열.concat(뒤에 붙일 배열)
parseInt( string, n )
: string을 n진법의 숫자로 바꿔줌parseFloat( string )
: 실수로 변환Math.floor(number)
: 어떤 수보다 크지 않은 최대의 정수를 반환 = 내림Math.ceil()
: 어떤 수보다 작지 않은 최소의 정수를 반환 = 올림Math.round()
: 어떤 수와 가장 가까운 정수를 반환 = 반올림arr.pop()
: 맨 뒤
에 있는 요소 제거arr.shift()
: 맨 앞
에 있는 요소 제거arr.push(요소)
: 배열 맨 뒤
에 순서대로 추가배열.unshift(요소)
: 맨 앞
에 요소 추가반복문도 역시 변수, 배열의 필요성과 마찬가지로 효율성(편의성)을 위해 사용하는 것 같다. 반복문이야말로 신세계.
console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);
console.log(6);
console.log(7);
console.log(8);
console.log(9);
console.log(10);
//...
console.log(100);
위 아래는 같은 결과
for ( let i = 1; i <=100; i++) {
console.log(i)
}
while (condition) {
// 반복해서 실행할 코드
// '반복문 본문(body)'이라 불림
}
condition(조건)
이 truthy
이면 반복문 본문의 코드
가 실행// while문을 이용하여 1 부터 100까지 더하고 그 결과를 출력하시오.
let a = 0;
let b = 0;
while (b<=100) {
a = a + b;
b++;
}
console.log(a)
// 5050
for ( 초기화문; 조건문; 반복이 될 때마다 실행되는 코드(증감식) {
수행할 동작
}
for (begin; condition; step) {
// ... body ...
}
begin
: 반복문에 진입할 때 단 한 번 실행
condition
: 반복마다 해당 조건이 확인됨, false이면 반복문을 멈춤
body
: condition이 truthy일 동안 계속해서 실행
step
: 각 반복의 body가 실행된 이후에 실행, 증감식에서 i += 2 이렇게 표현하면 2씩 증가.
let ourArray = [];
for (let i=10; i > 0; i -= 2) {
ourArray.push(i);
}
console.log(ourArray)
// [10, 8, 6, 4, 2]
배열의 가치는 많은 양의 데이터를 배열이라는 한 공간에 담아서 인덱스 값으로 필요할 때마다 그 데이터 요소를 꺼내 사용하는 것에 있다. 하지만 데이터가 셀 수 없을 정도로 많아질 경우 인덱스로 값을 활용하는 것은 어려울 수 있다. 이때 반복문을 사용한다면 원하는 배열의 값에 효율적이고 체계적으로 접근할 수 있다. 이런 점에서 반복문은 배열과, 배열은 반복문과 함께 사용할 때 그 효용이 더 커진다.
배열이 있으면 for 반복문과 배열[인덱스] 문법을 활용하여 배열의 값에 쉽게 접근할 수 있고 원하는 값으로 얼마든지 조작할 수 있다.
function makeSquare () {
let arr = new Array(10)
console.log(arr)
// [undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined]
for (let i = 0; i < 10; i++) {
arr[i] = i * i;
}
return arr;
}
console.log(makeSquare())
// [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
위의 많은 메소드의 예시 확인은
https://velog.io/@maxkmh/JavaScript-06-%EB%B0%B0%EC%97%B4