for of vs for in (1)

개발(공부) 자국·2021년 4월 19일
0

for of

오늘은 for of 반복문에 대해서 알아봤다.

이제 배열을 공부하고 있어서 자연스럽게 for of에 대한 반복문을 공부하게 되었다.

for of는 문자열이나 배열에서 사용하면 편리하게 사용할 수 있었다.

다른 사용처도 있겠지만 그 이외는 아직 모르는 부분이라 이해하기가 어려워서

우선 배열과 문자열에서 활용하는 방법에 대해서 이해한 대로 적어 놓기로 했다.


만약 "pineapple"의 문자열에서 'p'문자는 몇개가 들어있나? 라는 문제가 있다고 해보자.

function searchString(str, char) {  
  let search = 0;
    for (let n = 0 ; n < str.length; n++) {
      if (str[n] === char) {
        search = search + 1;
      }
    }
    return search;
}

console.log(searchString("pineapple", "p")); // 3

그렇다면 문자열의 인덱스를 문자열의 길이까지 반복해 비교해야 한다.

for of를 사용하지 않고 만들면 위 처럼 만들어 볼 수 있다.

이 함수에 "pineapple","p"를 넣어보면 결과 값 3이 나온다.

그런데 이 함수를 for of 반복문으로 만든다면 아래와 같이 사용할 수 있다.

function searchString(str, char) {
  let search = 0;
    for (let n of str) {
      if (n === char) {
        search = search + 1;
      }
    }
  return search;
}

console.log(searchString("pineapple", "p"));  // 3

이렇게 고쳐볼 수 있다. for of를 사용하지 않았을 때는 조건문과 증감문을 신경써야 하지만

for of 는 저렇게 변수선언만 안에 하나 해주고 뒤에 문자열이나 배열을 넣으면

배열의 순서대로 하나씩 반복해서 나오게 되어있다.

문제의 "pineapple"의 경우는 첫번째 반복문은 p 두번째는 i

이런식으로 순서대로 반복할 수 있다.

문자열은 하나의 문자에 인덱스 값이 매겨지지만

배열에서는 인덱스에 연결된 값은 문자 하나가 아니라 하나의 데이터이기 때문에

for of의 활용도는 더 높아질 수 있다.


그렇다면 위의 문제와 비슷하게 배열에서 for of를 사용하지 않은 반복문의 예를 살펴보자.

만약 배열 중에서 70 이상인 배열의 요소는 몇 개인가?

function searchScore(arr, score) {
  let search = 0;
  for (let n = 0; n < arr.length; n++) {
    if (arr[n] >= score) {
      search = search + 1;
    }
  }
  return search;
}

let arr1 = [23, 48, 80, 100, 76, 89, 65, 99, 92];
console.log(searchScore(arr1, 70)); // 6

이렇게 함수를 만들어 볼 수 있다. arr1의 배열에서 70이상인 개수는 6개로 나온다.

이번에도 이 함수를 for of구문으로 바꿔보자.

function searchScore(arr, score) {
  let search = 0;
  for (let n of arr) {
    if (n >= score) {
      search = search + 1;
    }
  }
  return search;
}

let arr1 = [23, 48, 80, 100, 76, 89, 65, 99, 92];
console.log(searchScore(arr1, 70)); // 6

이렇게 바꿔볼 수 있다. 많이 짧아지지는 못했지만 조건문과 증감문에 대해서

신경쓰지 않아도 된다는 것이 큰 장점이 될 수 있을 것 같다.

앞으로도 활용할 수 있을 때 많이 활용해야겠다.

다음은 객체에서만 사용하는 객체에서 사용하기 좋은 반복문 for in 에 대해서 알아봐야지.

profile
기록을 중요하게 생각하는 사람입니다. 학습한 내용을 정리한 것이라 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 언제든 말씀해 주시기 바랍니다.

0개의 댓글