A Developing Developer

04. 반복문 본문

4-1. 배열

  • 배열 : 여러 개의 변수를 한 번에 선언해 다룰 수 있는 자료형
[요소, 요소, 요소, ..., 요소]
const fruits = ['사과', '딸기', '배', '감']
// fruits[0] 은 fruits 배열의 0번째 인덱스 값을 불러온다. >>> '사과'
// fruits 뒤의 [](대괄호) 안에 숫자가 인덱스 값이고, 인덱스 값은 0부터 시작한다.
// fruits 배열의 0번째 인덱스의 값(요소) 가 '사과' 인 것이다.
  • 요소 : 배열 내부에 있는 값

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

배열.push(요소)
fruits.push('수박')

fruits = ['사과', '딸기', '배', '감', '수박']
//마지막 인덱스 바로 뒤에 요소가 추가된다.

- 배열 요소 제거하기(인덱스)

배열.splice(인덱스, 제거할 요소의 개수)
fruits.splice(2, 1)

//fruits = ['사과', '딸기', '감', '수박']
//기존에 있떤 2번 인덱스의 '배' 가 제거되었다.

- 배열 요소 제거하기(값)

const 인덱스 = 배열.indexOf(요소)
배열.splice(인덱스, 1)
const index = fruits.indexOf('수박')
//fruits = ['사과', '딸기', '감', '수박'] 이 경우 index 값은 3 이다.

fruits.splice(index, 1)
//fruits = ['사과', '딸기', '감'] 이 된다. ('수박' 제거)

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

배열.splice(인덱스, 0, 요소)
const fruits = ['사과', '딸기', '배', '감']

fruits.splice(1, 0, '오렌지')

//fruits = ['사과', '오렌지', '딸기', '배', '감']
//인덱스 1 자리에 제거되는 요소 없이 '오렌지'가 들어간다. 기존의 인덱스 1 자리의 '딸기' 는 인덱스 2 로 넘어간다.
  • 비파괴적 처리 : 처리 후에 원본 내용이 변경되지 않는 처리
const fruits = "사과, 딸기, 배, 감"   

fruits.split(',')

console.log(fruits)
  • 파괴적 처리 : 처리 후에 원본 내용이 변경되는 처리
const fruits = ['사과', '딸기', '배', '감']

fruits.push('수박')

console.log(fruits

 

4-2. 반복문

  • for in 반복문 : 배열의 인덱스를 기반으로 반복할 때 사용
for (const i in todos) {

    console.log(`${Number(1) + Number(i)}번째 할 일: ${todos[i]}`)
}

  • for of 반복문 : 배열의 값을 기반으로 반복할 때 사용
for (const todo of todos) {
    console.log(`오늘의 할 일 : ${todo}`)
}

  • for 반복문 : 횟수를 기반으로 반복할 때 사용
for (let i = 0; i < 5; i++) {
    console.log(`${i + 1}번째 반복문 입니다.`)
}

  • while 반복문 : 조건을 기반으로 반복할 때 사용
let i = 0
while (confirm('계속 진행할래?')) {
    alert(`${i + 1}번째 반복문입니다.`)
    i++
}

취소 누르면 whle 조건문에 false 입력되어 프로그램 종료, 확인 계속누르면 무한 루프

 

  • break : switch 조건문이나 반복문을 벗어날 때 사용
for (let i = 1; true; i++) {
    alert(i + '번째 반복문입닞다.')

    const isContinue = confirm('계속하실꺼?')
    if (!isContinue) {
        break
    }
}

alert('프로그램 종료')

취소누르면 false 입력 프로그램 종료, 확인누르면 무한 루프

  • continue : 반복문 안의 반복 작업을 멈추고 반복문의 처음으로 돌아가 다음 반복 작업을 진행
// 1 ~ 10 짝수 합

let outPut = 0

for (let i = 0; i <= 10; i++) {
    if (i % 2 === 1) {
    	//홀수면 현재 반복문을 중지하고 다음 반복문 수행
        continue
    } else {
        outPut += i
    }
}

console.log(outPut)

- 직삼각형

let outPut = ''

for (let i = 1; i < 10; i++) {
    for (let j = 1; j < i; j++) {
        outPut += '*'
    }
    outPut += '\n'
}
console.log(outPut)

- 피라미드

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)

- 다이아

let outPut = ''
const size = 5

for (let i = 1; i <= size; i++) {
    for (let j = size; j > i; j--) {
        outPut += ' '
    }
    for (let k = 0; k < 2 * i - 1; k++) {
        outPut += '*'
    }
    outPut += '\n'
}

for (let i = size - 1; i > 0; i--) {
    for (let j = size; j > i; j--) {
        outPut += ' '
    }
    for (let k = 0; k < 2 * i - 1; k++) {
        outPut += '*'
    }
    outPut += '\n'
}

console.log(outPut)

============================================================================================

출처 : 혼자 공부하는 자바스크립트

============================================================================================

 

챕터 2개 해보려고했는데, for문 생각보다 할게 많다.

 

개발일지 정리하는 것도 생각보다 오래걸리고...

 

그래도 천천히 나아가야지

 

언제쯤 답안 코드 안보고 피라미드 딱딱 나올려나 ㅠㅠ