문제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] (조건을 만족하는 모든 값 반환)
'JavaScript' 카테고리의 다른 글
[JS] 코딩테스트 032~034 - 배열의 split() 활용 및 sort() 정렬 메서드 (2) | 2025.02.17 |
---|---|
[JS] 코딩테스트 031 - 내장함수의 시간 복잡도 (0) | 2025.02.17 |
[JS] 코딩테스트 027~029 - 객체 만들기(중요)****, For문의 응용 (2) | 2025.02.17 |
[JS] 코딩테스트 022~026 - 대문자, 소문자 변환 (0) | 2025.02.17 |
[JS] 코딩테스트 021 - new Set() (0) | 2025.02.16 |