오늘은 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 에 대해서 알아봐야지.