반응형
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() | ❌ 불가능 | ✅ 가능 | 조건을 만족하는 값의 첫 번째 인덱스 반환 |
반응형
'프론트엔드 개발자로 일하기' 카테고리의 다른 글
typescript의 infer 키워드 (0) | 2025.03.12 |
---|---|
<a> 태그를 이용해 외부 페이지를 열 때 보안상 고려할 점 (0) | 2025.03.12 |
효과적인 디버깅 방법 (2) | 2025.02.24 |
git 브랜치 전략과 git Flow (0) | 2025.02.18 |
클라우드프론트와 정적 파일 배포 오류 (0) | 2025.02.18 |