재고 객체를 이름표 목록으로 바꾸기

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

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

객체의 키와 값을 함께 꺼내 "이름: 수량개" 형식의 문자열로 바꾸는 문제입니다.

오늘의 메서드

Object.entries()는 객체를 [키, 값] 쌍의 배열로 바꿔 줄 때 유용합니다.

메서드 설명

이 문제에서는 상품명과 수량을 둘 다 써서 문자열을 만들어야 합니다. Object.entries()를 사용하면 객체를 순회하면서 각 상품의 이름과 수량을 한 번에 꺼낼 수 있습니다. 그 뒤 map()으로 원하는 형식의 문자열 배열을 만들면 됩니다.

기본 문법

Object.entries(obj)

사용 예시

Object.entries({ apple: 3, banana: 5 })
// [['apple', 3], ['banana', 5]]

Object.entries({ pencil: 1 }).map(([name, count]) => `${name}: ${count}개`)
// ['pencil: 1개']

주의할 점

  • Object.entries()의 각 요소는 [key, value] 형태의 배열입니다.
  • 키와 값을 함께 써야 하므로 Object.keys()Object.values()만으로는 바로 해결하기 불편합니다.
  • 빈 객체를 넣으면 Object.entries() 결과도 빈 배열입니다.
  • 수량이 0이어도 빠뜨리지 말고 그대로 문자열에 포함해야 합니다.

제한사항

  • stock은 상품명을 키로, 재고 수량을 값으로 가지는 객체입니다.
  • 각 상품명은 길이 1 이상 20 이하의 문자열입니다.
  • 각 재고 수량은 0 이상 1000 이하의 정수입니다.
  • 반환값은 각 상품을 "상품명: 수량개" 형식으로 바꾼 문자열 배열입니다.
  • 결과 배열의 순서는 객체에 들어 있는 항목 순서를 그대로 따릅니다.

예시

  • 입력: stock = { apple: 3, banana: 5 } → 출력: ["apple: 3개", "banana: 5개"]
  • 입력: stock = { pencil: 1 } → 출력: ["pencil: 1개"]
  • 입력: stock = {} → 출력: []

힌트

  • 먼저 객체를 [키, 값] 쌍의 배열로 바꿔 보세요.
  • 각 쌍에서 상품명과 수량을 꺼내 문자열 하나로 만들면 됩니다.
  • 새 배열을 만들어야 하므로 Object.entries() 뒤에 map()을 이어 붙이는 방식이 잘 맞습니다.

해설

이 문제의 핵심은 객체에서 키와 값이 모두 필요하다는 점입니다. 상품명만 있거나 수량만 있어서는 "상품명: 수량개" 형식을 만들 수 없으므로, [키, 값] 쌍을 주는 Object.entries()가 가장 자연스럽습니다.

풀이 흐름은 다음과 같습니다.

  1. Object.entries(stock)으로 객체를 [상품명, 수량] 쌍의 배열로 바꿉니다.
  2. map()으로 각 쌍을 순회합니다.
  3. 템플릿 문자열을 사용해 "상품명: 수량개" 형식으로 바꿉니다.
  4. 만들어진 문자열 배열을 반환합니다.

예를 들어 { apple: 3, banana: 5 }[['apple', 3], ['banana', 5]]가 되고, 이를 각각 "apple: 3개", "banana: 5개"로 바꾸면 정답이 됩니다. 빈 객체라면 쌍 배열도 비어 있으므로 결과도 자연스럽게 빈 배열이 됩니다.

function buildStockLabelList(stock) {
  return Object.entries(stock).map(([name, count]) => `${name}: ${count}개`);
}

이 문제를 통해 Object.entries()객체의 키와 값을 함께 다뤄야 할 때 유용한 메서드라는 감각을 익힐 수 있습니다.

코드 작성

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

JavaScript 에디터 로딩 중...

커스텀 테스트

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

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

실행 결과

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

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

댓글

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