자바스크립트에서 유사배열과 배열의 차이

posinity·2022년 12월 1일
0

JavaScript

목록 보기
16/31

1. 유사배열이란?

배열이 아닌데 배열인척 하는 것.

let arr = {
    0: 'i',
    1: 'am',
    2: 'iron',
    3: 'man',
    length: 4
}

이런 식으로 만들 수 있음

2. 유사 배열의 조건

  1. 반드시 length가 필요하다. 이 조건은 필수, 없으면 유사배열이라고 인식하지 않는다.

  2. index번호가 0번부터 시작해서 1씩 증가해야 한다. 안그래도 되긴하는데 예상치 못한 결과가 생긴다.

3. 유사배열과 배열의 차이

자바스크립트에서 제공하는 배열 메소드를 사용할 수 없다!

4. 유사배열을 진짜 배열로 바꾸기 : Array.from()

function f() {
    let arr = Array.from(arguments);
    arr.forEach((value, key) => {
        console.log(`${value} : ${key}`);
    });

Array.from()을 사용하면 배열 메소드를 사용할 수 있다

5. 팀 공유로 추가한 정보

문자열

  • 마치 배열처럼 인덱스를 통해 각 문자에 접근할 수 있음 (유사배열과 같음)
  • length 프로퍼티를 가짐
  • for문으로 순회도 가능

원시값과 래퍼 객체

  • 원시값은 객체가 아니므로 프로퍼티나 매서드를 가질 수 없음
  • but 문자열이 마치 객체처럼 동작
  • 문자열, 숫자, 불리언 값의 경우 이 원시값에 대해 마치 객체처럼 마침표로 접근하면, 자바스크립트 엔진이 일시적으로 원시값을 연관된 객체로 변환해 주기 때문 (일시적 승급)
  • 생성된 객체로 프로퍼티 접근하거나 매서드를 호출하고 다시 원시값으로 되돌린다

래퍼 객체 : 문자열, 숫자, 불린 값에 대해 객체처럼 접근하면 생성되는 임시 객체

  • 문자열, 숫자, 불리언, 심벌은 암묵적으로 생성되는 래퍼 객체에 의해 마치 객체처럼 사용할 수 있음

  • 문자열은 원시값이라 배열처럼 값을 변경 할 수 없음(읽기 전용 값)

  • but 새로운 문자열을 재할당하는 것은 가능!

문자열 사용법

  • replace()로 문자열 치환 / replaceAll
str = str.replace('JAVA','JavaScript') // 여러개여도 맨 처음 한 문자열만 반환
  • 정규식 이용하여 모든 문자열 치환
str = str.replace(/JAVA/g,'JavaScript') // 여러개 모두 치환
  • 문자형 Array 사용
    • 문자열을 문자 어레이로 변환하고
    • 지정된 인덱스 값을 주어진 문자로 교체
    • 다시 함께 문자열로 결합
let string = string.split('')
string[index] = replacement
string.join('')

6. 참고자료

[JavaScript-15]유사배열 객체(Array-like Objects)

profile
문제를 해결하고 가치를 제공합니다

0개의 댓글