배열의 요소를 하나씩 돌아보거나(순회),
조건에 맞는 요소를 찾는(탐색) 메서드 정리
1. forEach()
배열의 모든 요소를 순회하면서 콜백 함수를 실행
let arr1 = [1, 2, 3];
arr1.forEach(function (item, idx, arr) {
console.log(idx, item * 2);
});
let doubledArr = [];
arr1.forEach((item) => {
doubledArr.push(item * 2);
});
console.log(doubledArr); // [2, 4, 6]
- 콜백함수 인자: `(item, index, array)`
- 항상 원본 배열의 길이만큼 실행
- `return`값이 없으면? `undefined`
- 새로운 배열을 만들고 싶다면 `map()`을 사용하는게 더 효율적
2. includes()
배열 안에 특정 값이 존재하는지 여부를 true/false로 반환
let arr2 = [1, 2, 3];
let isInclude = arr2.includes(3);
console.log(isInclude); // true
- `===` 기준으로 판단
- 문자열 포함 여부에도 사용 가능
console.log("Hello".includes("He")); // true
- 객체 비교시 불가능 (참조 주소 다름)
3. indexOf()
배열에서 특정 값의 인덱스를 반환
값이 없으면 `-1`을 반환
let arr3 = [1, 2, 3, 4, 5];
let index = arr3.indexOf(4);
console.log(index); // 3
let objectArr = [{ name: "도서" }, { name: "이도서" }];
console.log(objectArr.indexOf({ name: "도서" })); // -1
- 객체 비교는 주소로 이루어짐
- `{ name: "도서"}`는 새로운 객체이기 때문에 배열 내부의 기존 객체와 같지 않다고 판단됨
4. findIndex()
조건을 만족하는 요소의 인덱스를 반환
없으면 `-1`
let arr4 = [1, 2, 3];
const findedIndex = arr4.findIndex((item) => {
if (item == 2) return true;
});
console.log(findedIndex); // 1
const findedIndex1 = arr4.findIndex((item) => item % 2 !== 0);
console.log(findedIndex1); // 0
let objectArr1 = [{ name: "도서" }, { name: "이도서" }];
console.log(objectArr1.findIndex((item) => item.name === "도서")); // 0
- `indexOf()`와 달리, 객체 내부 값까지 비교 가능 (콜백을 사용하므로)
- 콜백이 true를 반환하는 순간 순회가 멈춤
5. find()
조건을 만족하는 요소 자체를 반환
없으면 `undefined`
let arr5 = [{ name: "도서" }, { name: "이도서" }];
const finded = arr5.find((item) => item.name === "도서");
console.log(finded); // { name: "도서" }
- `finedIndex()`와 달리 요소 그 자체를 반환
- 조건을 만족하는 첫 번째 요소만 반환
| 메서드 | 역할 | 반환값 | 원본 변경 | 특징 |
| `forEach` | 모든 요소 순회 | 없음 (`undefined`) | ❌ | 모든 요소에 함수 실행 |
| `includes` | 특정 값 존재 확인 | true / false | ❌ | 단순 포함 여부 확인 |
| `indexOf` | 값의 위치 반환 | 인덱스 / -1 | ❌ | `===` 비교만 가능 |
| `findIndex` | 조건 만족 요소의 인덱스 반환 | 인덱스 / -1 | ❌ | 콜백 조건 기반 |
| `find` | 조건 만족 요소 반환 | 요소 / `undefined` | ❌ | 콜백 조건 기반, 첫 번째만 반환 |
'React > JavaScript 심화' 카테고리의 다른 글
| [JavaScript 심화] Date 객체 (0) | 2025.11.11 |
|---|---|
| [JavaScript 심화] 배열 메서드 (배열 변형) (0) | 2025.11.10 |
| [JavaScript 심화] 배열 메서드 (요소 조작) (0) | 2025.11.10 |
| [JavaScript 심화] 순회 정리 (0) | 2025.11.10 |
| [JavaScript 심화] Spread & Rest (0) | 2025.11.03 |