Javascript 배열, 반복문

2022. 8. 19. 10:41JavaScript

1. 배열과 반복문

배열

var array =['포도','사과','바나나','망고'];

        array[4]='수박';
        array[5]='참외';

        for(var i=0; i<array.length; i++){
            alert(array[i]);
        }

반복문 + 배열 사용하기

ex) 5명의 이름을 입력받고, 한꺼번에 이름을 출력하는 프로그램, (입력: N 번 째 학생의 이름을 입력하시오)

var sname= [];
for(var i=0; i<5; i++){
    sname[i]=prompt(i+1+' 번 째 학생의 이름을 입력하시오','');
}
for(i=0; i<sname.length; i++){
    console.log(i+1+' 번째 학생의 이름은 : '+ sname[i] +' 입니다.');
}

ex)2명의 이름, 나이, 키 를 입력받고 한꺼번에 출력하시오, 해당 순번의 학생의 이름과 나이, 키를 검색해 보시오

var sname = [];
var age = [];
var height = [];

for(var i=0; i<2; i++){
    sname[i]=prompt(i+1+' 번 째 학생의 이름을 입력하시오','');
    age[i]=Number(prompt(i+1+ ' 번 째 학생의 나이를 입력하시오',''));
    height[i]=Number(prompt(i+1+ ' 번째 학생의 키를 입력하시오',''));
}

for(i=0; i<2; i++){
    console.log(sname[i]);
    console.log(age[i]);
    console.log(height[i]);
}

var cnt = Number(prompt('검색할 학생의 순서를 입력하시오 (1~2)',''));
console.log(sname[cnt-1]+ ' ' +age[cnt-1] +' '+ height[cnt-1]);

위 예제 처럼 배열에 여러가지 값을 넣을때 반복문 안에 변수명[]의 인덱스 번호( 변수[인덱스 번호] )

의  값을 i 로 설정해 i 수 만큼 값을 넣을 수 있다.

 

ex) * 변수를 중복 선언할 때 변수의 값을 하나씩 설정 해주어야한다.

var sname = [], pay = [], sname = [], age = [], height = []; // 변수 중복 선언
var total = 0, person= 0; // 변수 중복 선언
person =prompt('총 학생 수를 입력하시오','');

for(var i=0; i<person; i++){
    sname[i]=prompt((i+1)+' 번 째 학생의 이름을 입력하시오','');
    age[i]=Number(prompt(i+1+ ' 번 째 학생의 나이를 입력하시오',''));
    height[i]=Number(prompt(i+1+ ' 번째 학생의 키를 입력하시오',''));
    pay[i]=Number(prompt(i+1+' 번 째 학생의 월급을 입력하시오 ( 만원 ) ',''));
    
}

for(i=0; i<person; i++){
    console.log(sname[i]);
    console.log(age[i]);
    console.log(height[i]);
    console.log(pay[i]);
    total+=pay[i];
}

var cnt = Number(prompt('검색할 학생의 순서를 입력하시오 1~',''));
console.log(sname[cnt-1]+ ' ' +age[cnt-1] +' '+ height[cnt-1]);
console.log('학생들의 총 급여는 '+total+' 입니다.');

배열을 매개변수로 받기

var arr = [10,20,30,40,50];
var total = 0;

function func(num){
    for(var i=0; i<num.length; i++){
        total+=num[i];
    }
    return total;
}

var sum = func(arr);
console.log(sum);

자료구조 알고리즘


ex)최솟값, 최댓값

var arr = [20,30,10,50,40];
var max=arr[0];
var min=arr[0];

for(var i=1; i<5; i++){
    if(arr[i]>max){
        max=arr[i];//최댓값
    }
    if(arr[i]<min){
        min=arr[i];//최솟값
    }
}

ex)정렬 ( 배열의 순서를 오름차순/내림차순 순서로 정렬 )

sort.sort();

console.log(sort); 의 로직

var sort = [20,30,10,50,40];
var temp = 0;

for(var i=0; i<5-1; i++){
    for(var j=i+1; j<5; j++){
        if(sort[i]>sort[j]){ //내림차순으로 정렬할 경우 sort[i]<sort[j]
            temp=sort[i];
            sort[i]=sort[j];
            sort[j]=temp;
        }
    }
}
console.log(sort);

 

for in 문

  - 배열에 사용하는 전용 for 문

  - 형식

var array = ['자바스크립트','jQery','HTML5','Mobile'];

for(var i in array){
    alert(array[i]);
}
---------------------------------------------
for(var i=0; i<array.length; i++){
    alert(array[i]);
}

위쪽 반복문과 아랫쪽 반복문의 조건절은 같은 의미이다

 

while 문

- 초기값과 증감치를 가지고 있지 않다

- for문 과는 다르게 반복 횟수가 명확하지 않을 때 while 문을 사용한다

- 최소 1회도 loop문 안에 실행코드를 계산하지 않을 수 있다

- 형식

while(조건절){
	//반복할 코드 작성;
}

ex) 비밀번호 입력

var pass = '1004@';
var input = prompt('비밀번호를 입력하세요','');
while(input!=pass){
    alert('틀렸습니다');
    input = prompt('비밀번호를 다시 입력하세요','');
}
console.log('비밀번호가 일치합니다');

do while 문

- 최소 1회는 loop문 안에 실행코드를 계산한다

do{
	//조건에 true 반복할 코드 작성;
]while(조건절);

ex) 비밀번호 입력

var pass = '1004@';
var input = '';
do{
    input = prompt('비밀번호를 입력하세요','');
}while(input!=pass);
console.log('비밀번호가 일치합니다');

* 무한루프

  - 원하는 결과 값을 얻은 후에는 강제로 루프를 벗어나게 해야한다

  - break; 해당 반복문 1개를 강제로 빠져나간다

for(;;){
	if(조건절){
    //처리코드;
    break;
    }
}

while(true){
	if(조건절){
    //처리코드;
    break;
    }
}

do{
	if(조건절){
    //처리코드;
    break;
    }
}while(1);

ex) 비밀번호 입력 무한루프

var pass = '1004@';
var input = '';
do{
    input = prompt('비밀번호를 입력하세요','');
    if(pass==input){
        break; // 비밀번호 일치 시 강제 종료 코드
    }
}while(1);
console.log('비밀번호가 일치합니다');

ex) 비밀번호 3회 이상 오류시 종료

var pass='1004';
var pass2='';
var ok=false; // false(불일치), true(일치)   -> 가정법

for(var i=1; i<4; i++){
    pass2=prompt(i+' 번째 비밀번호를 입력하세요','');
    if(pass==pass2){
        alert('비밀번호가 인증 되었습니다.');
        ok=true;
        break; // if문이 아닌 for 문에서 빠져나가는 의미
    }else{
        alert('패스워드가 일치하지 않습니다. 다시 입력하세요');
    }
}
if(ok==true){
    alert('출금하시겠습니까?');
}else{
    alert('너 아까 그놈이지?');
}

위 코드에서 ok의 default 값이 false 이므로 반복문 내에서 반복횟수( i ) 를 초과했을 때

ok의 값이 default 값인 false인 상태로 빠져나오게 된다.

반대로 위 코드에서 반복문 내에 조건문의 조건절을 충족하였을 때 ok의 값이 true가 되며

break로 반복문을 빠져나와 ok의 값이 true인 상태로 다음 조건문을 실행하게 된다.

 

ex) 무한루프 응용

for(var i=1; true; i++){
    alert(i + ' 번째 반복문입니다.');

    if(!confirm('계속하시겠습니까?')){
        break
    };
}
alert('프로그램 종료');
var i=0;
    do{
    i++;
    alert(i + ' 번째 반복문입니다.');
    if(!confirm('계속하시겠습니까?')){
        break;
    };
}while(1);
alert('프로그램 종료');
var i=0;
while(1){
    i++;
    alert(i + ' 번째 반복문입니다.');
    if(!confirm('계속하시겠습니까?')){
        break;
    };
}
alert('프로그램 종료');

위 3가지 예제는 모두 같은 결과값

 

continue, break

for, while, do while 같은 반복문에서만 사용할 수 있는 키워드

var output =0;

for(var i=1; i<11; i++){
    if(i%2==1){ //홀수
        continue; // 키워드 삽입 시 반복문인 for문에 적용되며 키워드 아래에 있는
    }			//  코드를 무시하고 로직이 반복문의 마지막으로 이동한다
    output+=i; // if문의 조건절이 참일 때 continue가 실행되어 무시되는 코드
    console.log(i+'번째입니다'); // if문의 조건절이 참일 때 continue가 실행되어 무시되는 코드
} // continue 실행시 로직이 이동되는 위치

alert('1~10까지 짝수의 합:'+output);

위 코드 실행시 console 창에서 i 의 값은 2,4,6,8,10 이 된다

'JavaScript' 카테고리의 다른 글

Javascript window 객체  (0) 2022.08.30
Javascript object  (0) 2022.08.29
Javascript function  (0) 2022.08.22
Javascript 제어문  (0) 2022.08.18
Javascript 기초 자료형,연산자,내장함수, 배열  (0) 2022.08.18