개발자가 되

13기 혼공단(js)

[혼공JS] 3주차

dltjdud 2025. 1. 24. 02:52

일본 여행이슈로 새벽에 급하게 혼공단 합니당..

 

배열

[요소, 요소, 요소,  ..., 요소]

> const array = [273, 'String', true, dunction () {}, {} , [273, 103]]
undefinde

> array
	(6) [273, "String", true, f, {...}, Array(2)]
  //요소 개수 , 요소

 

배열 요소에 접근하기

배열[인덱스]

> const number = [273, 52, 103, 32]
undefined

> numbers[0]
273
> numbers[1]
52

> numbers[1 + 1]
103
> numbers[1 * 3]
32

 

배열 요소에 개수 확인하기

배열.length

> const fruits = ['배', '사과', '키위', '바나나'] // 배열 이름을 복수형으로 짓습니다.
undefined

> fruits.length
4 // 배열 fruits에 4개의 요소가 들어있으므로 4를 출력합니다.

> fruits[fruits.length -1]
"바나나" // fruits[4-1], 배열의 3번째 요소인 "바나나"를 출력합니다.

 

배열 뒷부분에 요소 추가하기

배열.push(요소)

> const todos = ['우유 구매', '업무 메일 확인하기', '필라테스 수업']
undefined

> todos
 (3)["우유 구매", "업무 메일 확인하기", "필라테스 수업"]
    
> todos.push('저녁 식사 준비하기')
4

> todos.push('피아노 연습하기')
5

> todos
 (5) ["우유 구매", "업무 메일 확인하기", "필라테스 수업", "저녁 식사 준비하기", "피아노 연습하기"]

 

배열 요소 제거하기

인덱스를 기반으로 제거

  • 배열.splice(인덱스, 제거할 요소의 개수)
> const itemsA = ['사과', '배', '바나나']
undefined

> itemsA.splice(2,1)
["바나나"]

> itemsA
 (2) ["사과", "배"]

 

값을 기반으로 제거

  • const 인덱스 = 배열.indexOf(요소)
  • 배열.splice(인덱스, 1)
> cosnt itemsB = ['사과', '배', '바나나']
undefined

> cosnt index = itemsB.indexOf('바나나')
undefined

> index
2

> itemsB.splice(index, 1)
["바나나"]

> itemsV
 (2) ["사과", "배"]
 
 > itemsB.indexOf('바나나')
 -1

 

배열의 특정 위치에 요소 추가하기

배열.splice(인덱스, 0, 요소)

> const itemsD = ["사과", "귤", "바나나", "오렌지"]
undefined

> itemsD.splice(2, 0, "양파")
[]

> itemsD
 (5) ["사과", "양파", "귤", "바나나", "오렌지"]

 

for in 반복문

for(const 반복 변수 in 배열 또는 객체) {
	문장
}

 

for of 반복문

for(const 반복 변수 of 배열 또는 객체) {
	문장
}

 

for 반복문

for(let i=0; i<반복 횟수; i++) {
	문장
}

 

while 반복문

while(boolean 표현식) {
	문장
}

 

break 키워드

while(true) {
} break

 

continue 키워드

 

누적예제

  • 중첩반복문을 사용하는 피라미드
<html>
<head>
    <title>중첩 반복문 사용하기(1)</title>
</head>
    <script>
        // 변수 선언합니다.
        let output = ''

        // 중첩 반복문
        for(let i=1; i<10; i++) {
            for(let j=0; j<i; j++) [
                output += '*'
            ]
            output += '\n'
        }

        // 출력합니다.
        console.log(output)
    </script>
<body>
</body>
</head>
</html>
<html>
<head>
    <title>중첩 반복문 사용하기(2)</title>
</head>
    <script>
        // 변수 선언합니다.
        let output = ''

        // 중첩 반복문
        for(let i=1; i<15; i++) {
            for(let j=15; j>i; j--) [
                output += ' '
            ]
            for(let k=0; k<2*i-1; k++) {
                output += '*'
            }
            output += '\n'
        }

        // 출력합니다.
        console.log(output)
    </script>
<body>
</body>
</head>
</html>

+ git https://github.com/dltjdud-0225/13gi_hongong_js.git

 

 

기본 미션

비파괴적 처리와 파괴적 처리의 의미와 장단점 설명하기

  • 파괴적(destructive) 처리: 처리 후에 원본 내용이 변경되지 않습니다.
const originalArray = [1, 2, 3];
const newArray = [...originalArray, 4]; // 원본 배열 복사 후 새 요소 추가

console.log("Original:", originalArray); // [1, 2, 3]
console.log("New:", newArray);           // [1, 2, 3, 4]
  • 비파괴적(non-destructive) 처리: 처리 후에 원본 내용이 변경됩니다.
const originalArray = [1, 2, 3];
originalArray.push(4); // 원본 배열에 직접 추가

console.log("Original:", originalArray); // [1, 2, 3, 4]

 

구분 비파괴적 처리 파괴적 처리
원본 데이터 유지 수정
새로운 데이터 생성됨 (메모리 사용 증가) 생성되지 않음 (메모리 효율적)
안전성 높음 낮음
속도 상대적으로 느림 (복사 과정 필요) 상대적으로 빠름
예제 코드 const newArray = [...originalArray, 4]; originalArray.push(4);
사용 용도 원본 데이터 보존이 필요한 경우 메모리 효율이 중요하거나 원본 수정이 괜찮은 경우

 

구분 비파괴적 처리 파괴적 처리
장점 원본 데이터 유지로 안전성 높음 메모리 사용이 효율적
  데이터 변경 이력 추적 가능 처리 속도가 빠름 (데이터 복사 불필요)
  디버깅 및 유지보수 용이 코드가 간결해질 수 있음
단점 새로운 데이터 생성으로 메모리 사용 증가 원본 데이터 수정으로 예기치 못한 부작용 위험
  대량 데이터 처리 시 성능 저하 가능 디버깅 및 변경 이력 추적 어려움
사용 예시 복잡한 연산, 원본 보존 필요 시 단순 연산, 메모리 제한 환경에서 유리

 

 

선택미션

p. 173 확인 문제 3번 문제 풀고, 풀이 과정 설명하기

비파괴적 처리: strA 가 보존
파괴적 처리: arrayB 가 변경
> const strA = "사과,배,바나나,귤"
> strA.split(",")
(4) ["사과", "배", "바나나", "귤"]
> strA
"사과,배,바나나,귤"
> const arrayB = ["사과", "배", "바나나", "귤"]
> arrayB.push("감")
5
> arrayB
(5) ["사과", "배", "바나나", "귤", "감"]
비파괴적 처리: arrayC 가 보존
비파괴적 처리: strD 가 보존
> const arrayC = [1, 2, 3, 4, 5]
> arrayC.map((x) => x * x)
(5) [1, 4, 9, 16, 25]
> arrayC
[1, 2, 3, 4, 5]
> const strD = " 여백이 포함된 메시지 "
> strD.trim()
"여백이 포함된 메시지"
> strD
" 여백이 포함된 메시지 "

'13기 혼공단(js)' 카테고리의 다른 글

[혼공JS] 5주차  (1) 2025.02.16
[혼공JS] 4주차  (0) 2025.02.09
[혼공JS] 2주차  (0) 2025.01.19
[혼공JS] 1주차  (0) 2025.01.11