JavaScript

[JS] 코딩테스트 030 - indexOf... 문자열 속 문자 찾기 메서드

Irene1988 2025. 2. 17. 15:40
문제30 : 문자열 속 문자 찾기
문자 pineapple에는 apple이라는 문자가 숨어 있습니다.
원범이는 이렇듯 문자열 속에 숨어있는 문자를 찾아보려고 합니다.

첫번째 입력에서는 문자열이 입력되고, 두번째에는 찾을 문자가 입력되어야 합니다.
그 문자가 시작하는 index를 반환하는 프로그램을 만들어 주세요.
const word = "파인애플은 정말 맛있습니다";
const keyword = "맛";

console.log(word.indexOf(keyword));

 

1. indexOf()

 

  • 문자열이나 배열에서 특정 요소의 첫 번째 인덱스를 반환합니다.
  • 찾지 못하면 -1을 반환합니다.
let str = "Hello, world!";
console.log(str.indexOf("world")); // 7
console.log(str.indexOf("JavaScript")); // -1
let arr = [10, 20, 30, 40, 50];
console.log(arr.indexOf(30)); // 2
console.log(arr.indexOf(100)); // -1

 


2. lastIndexOf()

indexOf()와 비슷하지만 마지막으로 등장하는 위치를 찾습니다.

let str = "Hello, world! Hello again!";
console.log(str.lastIndexOf("Hello")); // 14
let arr = [10, 20, 30, 40, 30];
console.log(arr.lastIndexOf(30)); // 4

3. includes()

요소가 존재하는지만 확인 (true / false 반환)

let str = "Hello, world!";
console.log(str.includes("world")); // true
console.log(str.includes("JavaScript")); // false
let arr = [10, 20, 30, 40, 50];
console.log(arr.includes(30)); // true
console.log(arr.includes(100)); // false

4. findIndex() (배열에서 조건에 맞는 첫 번째 요소의 인덱스를 찾음)

콜백 함수를 이용해 특정 조건을 만족하는 요소의 인덱스를 찾을 때 사용

let numbers = [10, 20, 30, 40, 50];
let index = numbers.findIndex(num => num > 25);
console.log(index); // 2 (30이 조건을 만족)

5. findLastIndex() (ES2023 추가, findIndex()의 반대 방향)

배열의 마지막 요소부터 검색하여 조건을 만족하는 첫 번째 요소의 인덱스를 반환

let numbers = [10, 20, 30, 40, 50];
let index = numbers.findLastIndex(num => num > 25);
console.log(index); // 4 (50이 조건을 만족)

find() 메서드

 

  • 배열에서 조건을 만족하는 첫 번째 요소를 반환합니다.
  • 조건을 만족하는 요소가 없으면 undefined를 반환합니다.
let numbers = [10, 20, 30, 40, 50];

// 25보다 큰 첫 번째 숫자 찾기
let result = numbers.find(num => num > 25);
console.log(result); // 30 (첫 번째로 조건을 만족하는 값)

 

let users = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Charlie", age: 35 }
];

// 나이가 30 이상인 첫 번째 사용자 찾기
let user = users.find(person => person.age >= 30);
console.log(user); // { name: "Bob", age: 30 }

 

find() vs findIndex()

메서드 반환값 조건을 만족하는 값이 없을 때
find() 첫 번째로 조건을 만족하는 undefined
findIndex() 첫 번째로 조건을 만족하는 인덱스 -1
let arr = [10, 20, 30, 40, 50];

console.log(arr.find(num => num > 25)); // 30
console.log(arr.findIndex(num => num > 25)); // 2

 

find()와 filter() 차이점

 

  • find()는 첫 번째로 조건을 만족하는 하나의 값을 반환
  • filter()는 조건을 만족하는 모든 요소를 배열로 반환
let numbers = [10, 20, 30, 40, 50];

console.log(numbers.find(num => num > 25)); 
// 30 (첫 번째로 조건을 만족하는 값만 반환)

console.log(numbers.filter(num => num > 25)); 
// [30, 40, 50] (조건을 만족하는 모든 값 반환)