본문 바로가기
문제 풀이/JavaScript

[자바스크립트 감잡기] 3일차 - 탐색계 (find / findIndex / some / every / includes)

by Electrohyun 2026. 7. 10.


 

생각 과정

 

- 오늘은 탐색 메서드를 풀어봤다. 생각보다 너무 빨리 풀어서 놀랐고, includes 풀때도 콜백 넣었다가 틀렸다.

- some이나 every는 아직 눈에 안익어서, 앞으로 알고리즘 문제 풀면서 애용해보려 한다.

- JS 거의 끝나간다. 화이팅~~

 

코드

// ── 드릴 1) 첫 번째 짝수 "값".  [1,3,5,8,10]  ->  8 ──
function d1_for(arr) {
  let answer = 0;

  for (const element of arr) {
    if (element % 2 === 0) {
      answer = element;
      break;
    }
  }

  return answer;
}
function d1_method(arr) {
  return arr.find((item) => item % 2 === 0);
}

// ── 드릴 2) 5보다 큰 첫 번째 "값".  [2,4,6,8]  ->  6 ──
function d2_for(arr) {
  let answer = 0;

  for (const element of arr) {
    if (element > 5) {
      answer = element;
      break;
    }
  }

  return answer;
}
function d2_method(arr) {
  return arr.find((item) => item > 5);
}

// ── 드릴 3) 첫 번째 짝수의 "인덱스".  [1,3,4,5]  ->  2 ──
function d3_for(arr) {
  let answer = 0;

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 === 0) {
      answer = i;
      break;
    }
  }

  return answer;
}
function d3_method(arr) {
  return arr.findIndex((item) => item % 2 === 0);
}

// ── 드릴 4) 값이 0인 첫 인덱스, 없으면 -1.  [1,2,3]  ->  -1 ──
function d4_for(arr) {
  let answer = 0;

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === 0) return i;
  }

  return -1;
}
function d4_method(arr) {
  return arr.findIndex((item) => item === 0);
}

// ── 드릴 5) 짝수가 하나라도 있나?  [1,3,5,7]  ->  false ──
function d5_for(arr) {
  for (const element of arr) {
    if (element % 2 === 0) return true;
  }

  return false;
}
function d5_method(arr) {
  return arr.some((item) => item % 2 === 0);
}

// ── 드릴 6) 100 넘는 수가 하나라도 있나?  [50,120,30]  ->  true ──
function d6_for(arr) {
  for (const element of arr) {
    if (element > 100) return true;
  }

  return false;
}
function d6_method(arr) {
  return arr.some((item) => item > 100);
}

// ── 드릴 7) 전부 양수인가?  [1,2,-3]  ->  false ──
function d7_for(arr) {
  for (const element of arr) {
    if (element < 0) return false;
  }

  return true;
}
function d7_method(arr) {
  return arr.every((item) => item > 0);
}

// ── 드릴 8) 전부 10 미만인가?  [3,5,9]  ->  true ──
function d8_for(arr) {
  for (const element of arr) {
    if (element >= 10) return false;
  }

  return true;
}
function d8_method(arr) {
  return arr.every((item) => item < 10);
}

// ── 드릴 9) 배열에 7이 들어있나?  [3,5,7,9]  ->  true ──
function d9_for(arr) {
  for (const element of arr) {
    if (element === 7) return true;
  }

  return false;
}
function d9_method(arr) {
  return arr.includes(7);
}

// ── 드릴 10) 종합: "1 3 5 4 7" -> 짝수가 있으면 "첫 짝수", 없으면 -1 -> 4 ──
//   (split -> map(Number) -> find. 없을 때 처리까지)
function d10_for(raw) {
  const data = raw.split(" ");

  for (const element of data) {
    if (Number(element) % 2 === 0) return Number(element);
  }

  return -1;
}
function d10_method(raw) {
  return raw
    .split(" ")
    .map(Number)
    .find((item) => item % 2 === 0);
}

 

회고 (오늘의 발견, 잘한 점, 불확실한 점, 내일부터)

 

오늘의 발견:

 

- some, every 메서드.

- 생각보다 쉽다. 무섭지 않다.

 

잘한 점:

 

- 거의 5분만에 풀었다.

 

불확실한 점:

 

- some, every 필요할 때 떠올리기

- includes에 콜백 넣지않기

 

내일부터:

 

- 내일은 그래도 배열 관련 문제가 나온다. 다음주 월요일부터는 열심히 풀어보자.