유사배열과 배열의 차이

셔노·2022년 7월 5일
0

배열(Array)

let arr = ["바나나","원숭이",[3,4,5],true,false,8,9,0]

console.log(arr[0]) // "바나나"
console.log(arr[3]) // [3,4,5]
console.log(arr[4]) // true
console.log(arr[6])	// 9

자바스크립트에서 배열이란 관련 있는 데이터를 하나의 변수에 할당해 관리하기 위해 사용하는 데이터 타입이다.

자바스크립트는 명시적 타입이 없기때문에, 하나의 배열은 여러 자료형을 가질 수 있는 특징이 있다.

배열을 사용하면 여러 데이터를 관련성 있게 관리할 수 있기 때문에 생산성 및 코드 가독성이 높아지고 이는 유지보수 비용의 감소로 이어진다. 이 외에도, 배열에서 기본으로 제공하는 함수를 사용할 수 있는 점, 데이터에 순차적으로 접근이 가능하다는 점 등을 비롯해 장점이 아주 많다.

유사배열(Array-Like Object)

let arr =
{
  "월":1,
  "화":3,
  "수":1,
  "목":5,
  "금":3,
  "토":2,
  "일":4,
  length:7
}
console.log(typeof arr) // object
console.log(arr["월"]) // 3
console.log(Object.keys(arr)) // ["월","화","수","목","금","토","일"]
console.log(Object.values(arr)) // [1,3,1,5,3,2,4]

console.log(Array.from(Array(9), (_, index) => index + 1)); // [1,2,3,4,5,6,7,8,9]

유사배열은 말 그대로 배열과 유사한 객체를 말한다.

유사배열은 함수에서 처리 결과로 반환하고 싶을때, Array에서 기본으로 내포되어있는 기능을 제공하고 싶지 않거나 Array에 내포되어있지 않은 기능을 제공하고싶을때 사용한다.

JS(JavaScript)에서 유사배열을 사용하기 위해서는 몇 가지 조건을 성립해야한다.

1. 숫자 형태의 indexing이 가능할것
2. length 속성을 포함할것

이는 유사배열을 배열처럼 사용하기 위한 최소한의 조건이다.
위의 규칙을 준수해, 아래와 같이 유사배열을 선언해 사용할 수 있다.

그럼 유사배열은 어떻게 수정하고 사용할까요?

let arr=
{
  "월":0,
  rate:0,
  "수":0,
  length:3
}

arr["월"] = 2; // { "월":2,rate:0,"수":0 }
arr.rate = 2; // { "월":2,rate:2,"수":0 }
Array.prototype.push.apply(arr,['add','add2']); // 출력값은 배열길이 / arr = { 0: "add", 월: 2, rate: 2, 수: 0, length: 4 }
Array.prototype.slice.call(arr,1,3); 

call 과 apply, 그리고 bind를 사용한다.

apply와 call 메소드가 bind와 크게 다른 방식으로 작동하는 점은 바로 이 둘은 함수를 호출한다는 것이다. apply와 call은 (1) 함수를 호출하면서 (2) this에다가 첫번째 인수로 전달한 특정 객체를 바인딩한다. 이와 다르게, bind는 함수를 호출하지 않으며, 단지 this로 사용할 객체만 전달할 뿐이다.

apply()와 call()은 함수에 인수를 전달하는 방식만 다를 뿐 동일한 일을 한다. apply엔 인수의 리스트를 전달하며, call엔 인수들을 개별적으로 추가하면 된다.

profile
초보개발자

0개의 댓글