설정 항목 쌍을 객체로 만들기

자바스크립트 코딩테스트 문제로 object-construction-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

js-basic easy object-construction-methods 함수명: buildSettingsObjectFromPairs 제한 시간: 200ms

설정 이름과 값이 [키, 값] 형태로 담긴 배열을 하나의 객체로 바꾸는 문제입니다.

오늘의 메서드

  • Object.fromEntries()

메서드 설명

  • Object.fromEntries()[key, value] 형태의 쌍들을 모아 객체로 만들어 주는 메서드입니다.
  • Object.entries()가 객체를 쌍 배열로 바꾼다면, Object.fromEntries()는 그 반대로 쌍 배열을 객체로 바꿉니다.
  • 폼 입력값, 설정 목록, 키-값 데이터처럼 이미 쌍으로 정리된 값을 객체로 만들 때 유용합니다.

기본 문법

Object.fromEntries(entries)

entries에는 보통 다음처럼 [키, 값] 형태의 배열들이 들어갑니다.

[
  ['theme', 'dark'],
  ['alarm', true],
]

사용 예시

const pairs = [
  ['theme', 'dark'],
  ['alarm', true],
];

Object.fromEntries(pairs);
// { theme: 'dark', alarm: true }

주의할 점

  • 각 항목은 [key, value]처럼 길이 2인 쌍이어야 합니다.
  • 키가 같으면 나중에 나온 값이 앞의 값을 덮어씁니다.
  • 원본 배열을 수정하지 않고 새 객체를 반환합니다.
  • 빈 배열을 넣으면 빈 객체 {}가 반환됩니다.

제한사항

  • pairs[key, value] 형태의 배열들을 담은 배열입니다.
  • 0 <= pairs.length <= 50
  • key는 길이 1 이상 20 이하의 문자열입니다.
  • value는 문자열, 숫자, 불리언 중 하나입니다.
  • 반환값은 pairs를 바탕으로 만든 객체입니다.
  • 같은 key가 여러 번 나오면 가장 뒤에 나온 값을 사용합니다.

예시

  • 입력: pairs = [["theme", "dark"], ["alarm", true], ["fontSize", 14]] → 출력: { theme: "dark", alarm: true, fontSize: 14 }
  • 입력: pairs = [["mode", "basic"]] → 출력: { mode: "basic" }
  • 입력: pairs = [] → 출력: {}
  • 입력: pairs = [["sound", false], ["sound", true], ["level", 3]] → 출력: { sound: true, level: 3 }

힌트

  • 배열 안의 각 항목이 이미 [키, 값] 모양인지 확인해 보세요.
  • 쌍 배열을 객체로 바꾸는 오늘의 메서드를 그대로 사용할 수 있습니다.
  • 중복 키 처리는 직접 조건문을 만들지 않아도 됩니다.

해설

이 문제의 핵심은 [키, 값] 쌍 배열을 객체로 바꾸는 방법을 익히는 것입니다.

예를 들어 다음 입력을 생각해 봅시다.

[
  ['theme', 'dark'],
  ['alarm', true],
  ['fontSize', 14],
]

이 배열은 이미 객체의 속성이 될 이름과 값이 한 쌍씩 정리되어 있습니다. 따라서 직접 반복문을 돌며 속성을 하나씩 넣어도 되지만, Object.fromEntries()를 사용하면 한 줄로 객체를 만들 수 있습니다.

function buildSettingsObjectFromPairs(pairs) {
  return Object.fromEntries(pairs);
}

빈 배열이 들어오면 만들 속성이 없으므로 {}가 반환됩니다. 같은 키가 여러 번 나오면 객체에는 같은 키를 두 번 보관할 수 없기 때문에 나중 값이 남습니다. 예를 들어 [["sound", false], ["sound", true]]{ sound: true }가 됩니다.

이 문제를 통해 객체를 배열로 풀어내는 Object.entries()와 반대로, 쌍 배열을 객체로 다시 조립하는 Object.fromEntries()의 역할을 익힐 수 있습니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.