게시글 삭제
정말 삭제하시겠습니까?
자바스크립트 중급 강좌 #7 - 배열 메소드1(Array methods)
[주요 목차]
splice와 slice로 배열 자르기
forEach·indexOf로 배열 순회와 검색
find·filter·map·join으로 실전 활용
자바스크립트로 배열을 다루다 보면 “이 요소를 중간에 빼고 싶다”, “조건에 맞는 값만 골라내고 싶다”는 고민이 자주 생기시죠? 기초에서 push, pop만 배웠던 분들은 splice나 map을 볼 때마다 머리가 아플 거예요. 이번 글에서는 자바스크립트 배열 메소드 중 실무에서 가장 많이 쓰이는 splice, slice, forEach, find, filter, map, join까지 차근차근 정리했습니다. 영상을 보지 않아도 바로 따라 할 수 있도록 예제와 팁을 덧붙였으니, 읽고 나면 배열 메소드가 훨씬 친근하게 느껴지실 거예요.
자바스크립트 중급 강좌 #7 - 배열 메소드1(Array methods) · 핵심 장면 1
splice와 slice로 배열 자르기
splice는 배열의 특정 위치에서 요소를 삭제하거나 교체할 때 쓰입니다. 첫 번째 인자는 시작 인덱스, 두 번째 인자는 삭제할 개수예요. 예를 들어 arr.splice(1, 2)는 인덱스 1부터 2개를 지웁니다. 삭제된 요소는 반환값으로 배열 형태로 돌아오니, 필요하면 변수에 담아 활용하세요.
두 번째 인수에 0을 넣으면 아무것도 지우지 않고 중간에 새 요소를 삽입할 수 있습니다. arr.splice(1, 0, 100, 200)처럼 쓰면 인덱스 1 위치에 100과 200이 추가되죠. 이처럼 splice 하나로 삭제·추가·교체를 모두 처리할 수 있어 실무에서 정말 자주 등장합니다.
반면 slice는 원본을 건드리지 않고 일부를 복사해 새 배열을 반환합니다. slice(1, 4)는 인덱스 1부터 3까지(4는 미포함) 가져오고, 인수를 생략하면 끝까지 복사합니다. 이전에 문자열에서 배웠던 slice와 동일한 규칙이라 기억하기 쉽습니다. 원본을 유지하면서 데이터를 가공하고 싶을 때 slice를 선택하세요.
자바스크립트 중급 강좌 #7 - 배열 메소드1(Array methods) · 참고 컷 2
forEach·indexOf로 배열 순회와 검색
forEach는 배열을 순회하며 각 요소에 함수를 실행합니다. 콜백 함수의 첫 번째 매개변수는 요소 값, 두 번째는 인덱스, 세 번째는 배열 자체입니다. 보통 값과 인덱스만 사용하죠. 예를 들어 userList.forEach((item, idx) => console.log(idx, item))처럼 쓰면 번호와 함께 출력할 수 있습니다.
indexOf는 특정 값의 인덱스를 찾아줍니다. 없으면 -1을 반환하고, 두 번째 인수로 검색 시작 위치를 지정할 수 있어요. lastIndexOf는 뒤에서부터 찾습니다. 단순히 “값이 있는지”만 확인하고 싶다면 includes를 쓰는 게 더 직관적입니다. includes는 true/false만 돌려주니까요.
자바스크립트 중급 강좌 #7 - 배열 메소드1(Array methods) · 핵심 장면 3
find·filter·map·join으로 실전 활용
find는 조건을 만족하는 첫 번째 요소를 반환합니다. 콜백으로 복잡한 조건(예: 짝수 찾기, 객체 속성 비교)을 넣을 수 있어 indexOf보다 강력합니다. 조건에 맞는 요소가 없으면 undefined를 돌려주죠. filter는 조건을 만족하는 모든 요소를 새 배열로 만들어 줍니다. find와 문법은 같지만 결과가 배열이라는 점이 다릅니다.
map은 각 요소를 변형해 새 배열을 생성합니다. 기존 배열을 건드리지 않고 “나이로 adult 여부 추가” 같은 작업을 할 때 유용합니다. join은 배열을 문자열로 합칠 때 쓰고, 반대로 split은 문자열을 배열로 나눕니다. 구분자를 생략하면 쉼표로 연결되고, 공백이나 특수문자를 넣으면 원하는 형태로 출력됩니다. 마지막으로 Array.isArray()로 진짜 배열인지 확인하는 습관을 들이면 타입 에러를 줄일 수 있어요.
[자주 묻는 질문]
splice와 slice의 차이를 한 번에 정리해 주세요.?
splice는 원본 배열을 직접 수정하며 삭제·추가·교체가 가능하고, 삭제된 요소를 반환합니다. slice는 원본을 그대로 두고 일부를 복사해 새 배열을 만들 때 씁니다. “원본을 바꿔도 되는가?”를 기준으로 선택하면 됩니다.
forEach 대신 map을 쓰는 경우는 언제인가요?
forEach는 단순히 순회하며 작업할 때, map은 각 요소를 변형해 새로운 배열이 필요할 때 사용합니다. 예를 들어 사용자 목록에 adult 속성을 추가해 새 배열을 만들 때는 map이 적합합니다.
find와 filter 중 어떤 걸 써야 할까요?
첫 번째로 만나는 요소 하나만 필요하면 find, 조건에 맞는 모든 요소를 배열로 받고 싶으면 filter를 선택하세요. find는 undefined, filter는 빈 배열을 반환한다는 점도 기억해 두면 좋습니다.