프론트엔드 개발자로 일하기

String과 Array의 차이

프론트루나 2025. 3. 10. 21:26
반응형

String과 Array 모두 length 속성이 있다!!!!!!


let msg = "programmers";

msg.length ; // 이는 배열처럼 문자열의 길이를 출력한다. 

msg\[0\] // "p" 이렇게 배열처럼 인덱스를 통해 문자열을 읽어올 수 있다.

문자열과 배열의 length 속성 차이

length 속성 있음? ✅ 있음 ✅ 있음
length 값 변경 가능? ❌ (읽기 전용) ✅ (변경 가능)
요소 변경 가능? ❌ (불변) ✅ (가변)
splice() 사용 가능? ❌ 불가능 ✅ 가능
push(), pop() 사용 가능? ❌ 불가능 ✅ 가능

 

- 문자열은 배열처럼 보이지만, 배열이 아니다.

- 문자열에도 length 속성이 있지만, 읽기전용 속성이다.

- 문자열도 []로 인덱스 접근은 가능하지만, 문자변경은 불가하다.(배열에서 사용하는 함수 사용 불가)

- splice, slice, push, pop 같은 메서드는 사용할 수 없다.

 

- 문자열을 수정하려면 새로운 문자열을 만들어야 한다. 

 

 

🔹 문자열과 배열에서 모두 사용 가능한 메서드

다음은 문자열과 배열 모두에서 사용할 수 있는 주요 메서드

 

slice() ✅ 가능 ✅ 가능 일부를 잘라서 새로운 값 반환 (원본 변경 ❌)
indexOf() ✅ 가능 ✅ 가능 특정 요소(문자)의 위치 찾기
lastIndexOf() ✅ 가능 ✅ 가능 특정 요소(문자)의 마지막 위치 찾기
includes() ✅ 가능 ✅ 가능 특정 요소(문자)가 포함되어 있는지 확인
concat() ✅ 가능 ✅ 가능 두 개 이상의 문자열 또는 배열 합치기
forEach() ❌ 불가능 ✅ 가능 배열 요소를 반복하며 실행 (문자열은 forEach() ❌)
map() ❌ 불가능 ✅ 가능 배열 요소를 변환해서 새 배열 생성 (문자열은 map() ❌)

📌 그런데!

  • slice(), indexOf(), lastIndexOf(), includes(), concat() 같은 메서드는 문자열과 배열 모두 사용 가능!
  • 하지만 배열 전용 메서드 (splice(), push(), pop(), map(), forEach() 등)는 문자열에서 사용할 수 없어요.

🔹 indexOf() vs findIndex() 차이점

메서드문자열에서 사용 가능?배열에서 사용 가능?동작 방식

indexOf() ✅ 가능 ✅ 가능 완전히 일치하는 값의 첫 번째 인덱스 반환
findIndex() ❌ 불가능 ✅ 가능 조건을 만족하는 값의 첫 번째 인덱스 반환
반응형