JavaScript - 배열을 객체로 변환, 4가지 방법

배열을 객체(object)로 변환하는 방법을 소개합니다.

1. Object.assign()으로 배열을 객체로 변환

Object.assign(target, source)는 source의 내용을 target에 복사합니다. 아래와 같이 배열을 source로 전달하면 '0', '1', '2'처럼 Index가 key가 되고, 배열의 요소가 value로 이루어진 객체가 생성됩니다.

let arr = ['first', 'second', 'third'];

let obj = Object.assign({}, arr);
console.log(obj);

Output:

{ '0': 'first', '1': 'second', '2': 'third' }

2. Spread operator로 배열을 객체로 변환

Spread operator를 이용하여 다음과 같이 배열을 객체로 변환할 수 있습니다. key는 Index가 됩니다.

let arr = ['first', 'second', 'third'];

let obj = {...arr}
console.log(obj);

Output:

{ '0': 'first', '1': 'second', '2': 'third' }

3. forEach()로 배열을 객체로 변환

만약 key가 Index가 아닌 어떤 값으로 변경하고 싶다면 forEach와 같이 반복문을 사용하여 직접 배열을 객체로 변환할 수 있습니다.

let arr = ['first', 'second', 'third'];
let obj = {};

arr.forEach((element, index) => {
  obj['key' + index] = element;
});

console.log(obj);

Output:

{ key0: 'first', key1: 'second', key2: 'third' }

4. Array.reduce()로 배열을 객체로 변환

forEach()대신에 Array.reduce()를 사용하여 특정 key로 객체를 생성할 수 있습니다.

let arr = ['first', 'second', 'third'];

let obj = arr.reduce((accumulator, value, index) => {
  return {...accumulator, ['key' + index]: value};
}, {});

console.log(obj);

Output:

{ key0: 'first', key1: 'second', key2: 'third' }

5. Object.fromEntries()로 key-value 쌍의 배열을 객체로 변환

Object.fromEntries()는 key-value 요소를 갖고 있는 Array 또는 Map을 인자로 전달하면 객체로 변환합니다.

let arr = [['first', 'A'], ['second', 'B'], ['third', 'C']];

let obj = Object.fromEntries(arr);
console.log(obj);

Output:

{ first: 'A', second: 'B', third: 'C' }

참고로, Object.fromEntries()으로 Map을 객체로 전달하면 아래와 같이 구현할 수 있습니다.

let map = new Map([['first', 'A'], ['second', 'B'], ['third', 'C']]);
console.log(map);

let obj = Object.fromEntries(map);
console.log(obj);

Output:

Map(3) { 'first' => 'A', 'second' => 'B', 'third' => 'C' }
{ first: 'A', second: 'B', third: 'C' }
Loading script...
codechachaCopyright ©2019 codechacha