언어 및 도구들 공부/Javascript

원소가 배열인 Json의 작성

Dr.Mlem 2024. 12. 11. 22:16

 

Q1.

원소갯수가 N개인 어떤 배열 A가 있고, 똑같이 원소갯수가 N개인 배열 B가 있어.

이때, C라는 JSON을,
 
const c = {A, B}; 라고 만들면,
 
어떻게 내부적으로 구성되는거야?

A의 원소 a1이라는 키에 B의 원소 b1, a2에 b2..... 이렇게 대응되는거야?

 
 
 
A1.
2/2

ChatGPT의 말:

 

아니, const c = {A, B};라는 코드는 네가 생각한 것처럼 배열 A의 각 원소가 키가 되고, 배열 B의 원소가 그 키에 대응되는 값으로 구성되는 객체를 만드는 것이 아니야. , 이 코드는 단순히 배열 A와 배열 B를 객체의 두 개의 속성으로 포함하는 객체를 만드는 거야.

구체적으로 살펴보자면:

입력 코드

const A = [1, 2, 3];
const B = ['a', 'b', 'c'];
const c = { A, B };
console.log(c);

결과

c의 구조는 다음과 같이 만들어져:

{
  "A": [1, 2, 3],
  "B": ["a", "b", "c"]
}

 

즉, c는 배열 A와 배열 B를 속성으로 가지고 있는 객체야. 여기서:

  • A는 [1, 2, 3]이라는 배열 자체를 값으로 가지는 키가 되고,
  • B는 ['a', 'b', 'c']라는 배열 자체를 값으로 가지는 키가 돼.

네가 기대한 구조를 원한다면?

배열 A의 각 원소를 키로, 배열 B의 각 원소를 값으로 하는 객체를 원한다면, 두 배열의 길이가 같다고 가정했을 때, 다음과 같이 작성해야 해:

const A = [1, 2, 3];
const B = ['a', 'b', 'c'];
const c = Object.fromEntries(A.map((key, index) => [key, B[index]]));
console.log(c);

결과

{
  "1": "a",
  "2": "b",
  "3": "c"
}

여기서 Object.fromEntries를 사용해, A.map을 통해 각 A와 B의 원소를 키-값 쌍으로 변환한 뒤 객체를 만들었어. 이렇게 하면 네가 말한 방식대로 A의 원소를 키로, B의 원소를 값으로 대응하는 객체를 만들 수 있어!