지적 코딩을 위한 매우 얕은 지식

Javascript/Js

JS 반복문

toy2508 2022. 5. 25. 17:19
반응형

1. While 

  - 표현식 값이 true일때 까지 블록 내에 코드를 반복한다.
  - 무한 루프를 만들수 있다.

let count = 0:
while(count < 10) {
	console.log(count);
    count++;
}

2. do/while

 - while문과 비슷하지만 첫번째 루프는 무조건 실행한다.

function printArray(a) {
	let len = a.length, i = 0;
    if (len === 0) {
    	console.log("Empty Array");
    } else {
    	do {
        	console.log(a[i]);
        } while(++i < len)
    }
}

 

3. for

 - 카운트 변수를 초기화해서 해당 변수가 어떤 값이 도달할때 까지 루프 수행
 - 구조는 for(변수 초기화, 변수 조건식, 증감식)

for(let count=0; count<10; count++) {
	console.log(count);
}

// 아래와 같은 형태도 가능
let i, j, sum = 0;
for(i=0, j=0; i<10; i++, j--) {
	sum += i * j;
}

// 연결된 리스트 obj의 마지막을 반환
function tail(obj) {
    // obj가 true 값이면 반복
	for(; obj.next; obj = obj.next) /* 비움 */ ;
    return obj;
}

4. for/of

 - 이터러블(iterable) 객체(배열, 문자열, 세트 맵)에서 동작한다.

// 배열 사용법
let data = [1,2,3,4,5,6,7,8,9], sum = 0;
for(let element of data) {
	sum += element;
}

// 객체는 사용할 수 없지만 keys, values entries을 통해서 사용가능
let obj = {x:1, y:2, z:3};
let keys = "";
for(let k of Object.keys(obj)) {
	keys += k;
}

let sum = 0;
for(let v of Object.values(obj)) {
	sum += v;
}

let pairs = "";
for(let [k, v] of Object.entries(obj)) {
	pairs += k + v;
}


// 문자열 사용법
let frequency = {};
for(let letter of "mississippi") {
	if(frequency[letter]) {
    	frequency[letter]++;
    } else {
    	frequency[letter] = 1;
 	}   
}


// 세트
let text = "Na na na na na na na na Batman!";
let wordSet = new Set(text.split(" "));
let unique = [];
for (let word of wordSet) {
	unique.push(word);
}

// 맵
let m  = new Map([[1, "one"]]);
for(let [key, value] of m) {
	console.log(key, value)
}

// for/await를 사용한 비동기 순회
async function printStream(stream) {
	for await(let chunk of stream) {
    	console.log(chunk);
    }
}

5. for/in

  - for/of와 비슷하지만 이터러블 객체가 아니더라도 사용가능

for(let p in obj){ // obj의 프로퍼티 이름을 변수 p에 할당
	console.log(obj[p]); //각 프로퍼티 값을 출력
}

let obj = {x:1, y:2, z:3};
let a = [], i = 0;
for(a[i++] in obj) {}  //객체의 경우 i는 프로퍼티 값이 온다.
// a = ['x','y','z']

// 배열을 사용할 경우
for (let i in a) console.log(a[i]) //배열의 경우 i는 배열 인덱스 값이 온다.



반응형

'Javascript > Js' 카테고리의 다른 글

JS 객체(1)  (0) 2022.05.29
JS 점프문  (0) 2022.05.28
JS 표현문, 선언문, 조건문  (0) 2022.05.24
JS 연산자  (0) 2022.05.23
JS 표현식  (0) 2022.05.22