[JS] 배열안에 객체 vs 객체 안에 객체

Junwoo Park·2024년 6월 26일
0

JavaScript

목록 보기
3/6

배열 안에 객체 vs 객체 안에 객체: 데이터 구조 선택하기

데이터를 배열 안에 객체로 저장할지, 객체 안에 객체로 저장할지 결정하는 것은 중요합니다. 각 접근 방식의 장단점을 이해하면, 데이터 구조를 보다 효율적으로 설계할 수 있습니다. 예시 데이터를 사용하여 각 접근 방식의 장단점을 살펴보겠습니다.

예시 데이터

음식점 데이터를 예시로 들어보겠습니다.

[
  {
    "name": "Restaurant1",
    "open": true,
    "cuisine": "Italian",
    "rating": 4.5,
    "maxTables": 20
  },
  {
    "name": "Restaurant2",
    "open": false,
    "cuisine": "Chinese",
    "rating": 4.0,
    "maxTables": 15
  },
  {
    "name": "Restaurant3",
    "open": true,
    "cuisine": "Mexican",
    "rating": 4.2,
    "maxTables": 25
  }
]

배열 안에 객체

[
  {
    "name": "Restaurant1",
    "open": true,
    "cuisine": "Italian",
    "rating": 4.5,
    "maxTables": 20
  },
  {
    "name": "Restaurant2",
    "open": false,
    "cuisine": "Chinese",
    "rating": 4.0,
    "maxTables": 15
  },
  {
    "name": "Restaurant3",
    "open": true,
    "cuisine": "Mexican",
    "rating": 4.2,
    "maxTables": 25
  }
]

장점:

  1. 순회 및 검색 용이: 배열 내의 객체들은 인덱스로 접근할 수 있어 반복문을 통해 쉽게 순회하거나 특정 조건을 만족하는 객체를 찾기 쉽습니다.
  2. 일관된 구조: 배열 안의 모든 객체는 동일한 구조를 가지므로 코드의 일관성을 유지하기 쉽습니다.
  3. 직관적 구조: 데이터를 테이블 형태로 관리할 때 적합하며, JSON이나 데이터베이스에서 많이 사용하는 구조입니다.
  4. 고차함수 사용 가능: map, filter, reduce 등의 고차함수를 사용하여 데이터를 쉽게 조작할 수 있습니다.

단점:

  1. 빠른 접근성 부족: 특정 객체를 찾기 위해서는 배열 전체를 순회해야 하므로 대규모 데이터일 경우 성능 저하가 발생할 수 있습니다.
  2. 데이터 중복 가능성: 배열 안의 각 객체가 독립적이기 때문에, 중복된 데이터가 발생할 수 있습니다.

객체 안에 객체

{
  "Restaurant1": {
    "open": true,
    "cuisine": "Italian",
    "rating": 4.5,
    "maxTables": 20
  },
  "Restaurant2": {
    "open": false,
    "cuisine": "Chinese",
    "rating": 4.0,
    "maxTables": 15
  },
  "Restaurant3": {
    "open": true,
    "cuisine": "Mexican",
    "rating": 4.2,
    "maxTables": 25
  }
}

장점:

  1. 빠른 접근성: 키 값으로 객체를 바로 접근할 수 있어 특정 객체를 찾는 데 시간이 적게 걸립니다.
  2. 고유성 보장: 각 키 값이 고유하기 때문에 데이터 중복이 발생하지 않습니다.
  3. 직관적인 데이터 참조: 이름으로 객체를 바로 참조할 수 있어 코드가 더 직관적이고 이해하기 쉽습니다.

단점:

  1. 순회 어려움: 객체를 순회하려면 Object.keysObject.values 등의 메소드를 사용해야 하므로 배열에 비해 다소 번거로울 수 있습니다.
  2. 유연성 부족: 키 값이 고정되어 있어, 동적으로 키를 추가하거나 제거하는 것이 배열에 비해 다소 불편할 수 있습니다.
  3. 메모리 사용량 증가: 객체의 키가 문자열로 저장되므로, 배열에 비해 메모리 사용량이 늘어날 수 있습니다.
  4. 고차함수 사용 제한: map, filter, reduce 등의 고차함수를 바로 사용할 수 없고, 객체의 키와 값을 배열로 변환한 후 사용해야 합니다.

결론

  • 배열 안에 객체는 데이터의 일관성을 유지하고 순회나 검색이 빈번하며, 고차함수를 통해 데이터를 쉽게 조작할 수 있는 경우에 유리합니다.
  • 객체 안에 객체는 빠른 접근성과 고유한 데이터 관리를 원하는 경우에 유리하지만, 순회가 어렵고 고차함수 사용이 제한됩니다.

데이터의 구조와 사용 용도에 따라 적합한 방식을 선택하는 것이 좋습니다. 만약 데이터가 많고 빠른 검색이 필요하며, 고차함수를 자주 사용한다면 배열 안에 객체가 더 적합할 수 있고, 데이터가 적고 고유한 데이터 관리를 원한다면 객체 안에 객체가 더 적합할 수 있습니다.

profile
배움을 멈추지 않는 개발자, 박준우입니다.

0개의 댓글