[TIL] 반복문

ohoho·2023년 5월 23일

슬기로운스터디

목록 보기
4/54

for in

  • 주로 배열보단 객체에서 사용도가 높다.(왜 책에 배열 예시를 두었는지 의문)
  • 반복 변수에 인덱스가 들어간다.
  • hasOwnProperty코드를 추가해서 사용해야 안정적이다.
    (hasOwnProperty메소드는 객체가 특정 프로퍼티를 가지고 있는지 판단한다. true/false)
const arr = ["A","B"];

for(const idx in arr){
  if(Object.hasOwnProperty(idx)){
     	console.log(`${idx}번째 할일 ${arr[idx]}`)
     }
}
//0번째 할일 A
//1번째 할일 B

for of

  • 반복 변수에 요소가 들어간다.
const arr = ["A","B"];

for(const key of arr){
	console.log(`할일 ${key}`)
}
//할일 A
//할일 B

for

  • 특정횟수만큼 반복하고 싶을때 사용한다.
const arr = ["A","B"];

for(let i = 0; i < arr.length;i++){
	console.log(i)
}
//A
//B
//1부터 100까지 곱하기
let res = 1;
for(let i = 1;i<=100;i++){
  res*=i
}

while

  • if조건문과 형태가 비슷한 반복문이다.
  • true면 계속해서 실행(무한루프)
  • break을 사용하여 끝내야한다.
while(true){

} break

알고리즘 숙제

  1. 문자열 내 p와 y의 개수
function solution(s){
     const arr = s.toUpperCase().split('')
     return arr.filter(ele => 'P' === ele).length == arr.filter(ele => 'Y' === ele).length ? true : false;
}

풀이 : 비교하기 쉽게 대문자로 만들어준 후 split을 사용하여 단어를 배열로 만들어준뒤 filter를 사용하여 원하는 단어 개수를 찾은 다음 비교후 삼항연산자 사용하여 true/false 로 값 전달
(생각해보니 굳이 변수(arr)에 안담았어도 됐을거 같다)


2. 음양더하기

function solution(absolutes, signs) {
   return absolutes.reduce((acc,cur,idx) => {
        if(signs[idx] === false){
            acc += -cur
        }else{
            acc += cur
        }
    return acc;
    },0)
}

풀이 : 처음엔 forEach와 for in을 사용하여 인덱스값 비교하며 돌려봤는데 아무리 째려봐도 답이 안나와서 reduce로 객체로 합친후 풀려다가 더 간단한 방법으로 변경.
숫자배열을 reduce로 돌려서 초기값 0으로 지정후 누적값(acc), 현재요소값(cur), 현재요소의 인덱스값(idx)을 전달받은 후 if문을 사용하여 signs의 배열의 signs[idx] === false 확인하여 값이 false인 경우 현재요소값(cur)을 음수로 만들어서 누적값(acc)에 더하고 아니라면 양수를 더한다.

0개의 댓글