[코플릿 7번] convertListToObject

아데스티·2023년 2월 12일
0

알고리즘 테스트

목록 보기
3/10

문제

2차원 배열(배열을 요소로 갖는 배열)을 입력받아 각 배열을 이용해 만든 객체를 리턴해야 합니다.

입력

인자 1 : arr

  • 배열을 요소로 갖는 배열
  • arr[i]string 타입을 요소로 갖는 배열
  • arr[i].length는 0 또는 2

출력

  • arr[i]의 첫 번째 요소를 키, 두 번째 요소를 값으로 하는 객체를 리턴해야 합니다.

주의 사항

  • 중복되는 키의 경우, 초기의 값을 사용합니다.
  • 빈 배열을 입력받은 경우, 빈 객체를 리턴해야 합니다.
  • arr[i]의 길이가 0인 경우, 무시합니다.

입출력 예시

const arr = [
  ['make', 'Ford'],
  ['model', 'Mustang'],
  ['year', '1964'],
  ['make', 'Bill'],
];

let output = convertListToObject(arr);

console.log(output) // -->
{
  make : 'Ford'
  model : 'Mustang',
  year : '1964'
}

핵심 내용

  • 배열은 index값을 키로 가진 객체이다
  • 배열과 객체의 키값을 비교할 수 있다.

풀이

나의 시도

참고자료 : Array.prototype.flat()

function convertListToObject(arr) {
  // TODO: 여기에 코드를 작성합니다.

  if (arr.length === 0) return {};
  return Object.fromEntries(arr);
}

참고 자료 : **JavaScript - 배열을 객체로 변환, 4가지 방법**

function convertListToObject(arr) {
    // TODO: 여기에 코드를 작성합니다.
    let idxArr = [];
    for (let i = 0; i < arr.length; i++) {
      idxArr = [...idxArr, arr[i][0]];
      idxArr.filter((el, idx) => idxArr.indexOf(el) === idx);
    }

    console.log(idxArr);
  }

참고 자료:

[Javascript] 배열 중복 제거하는 3가지 방법
[Javascript] 배열의 특정 값 찾기 - find(), filter()
indexOf MDN
Object.key MDN

정답

function convertListToObject(arr) {
  let result = {};

  for (let i = 0; i < arr.length; i++) {
    if (arr[i].length > 0 && result[arr[i][0]] === undefined) {
      result[arr[i][0]] = arr[i][1];
    }
  }

  return result;
}

분석

function convertListToObject(arr) {
  let result = {}; // 빈 객체 생성

  for (let i = 0; i < arr.length; i++) {
		// arr의 i번째 요소 길이가 0보다 커야함

		// result[arr[i][0]] = arr[i][1];
		// result['키'] 에 '값' 할당
		// result[arr[i][0]] -> result['키'] 에 값이 할당되어 있다면
		// 넘어가기 (없을 때에만 넣기)

    if (arr[i].length > 0 && result[arr[i][0]] === undefined) {
      result[arr[i][0]] = arr[i][1];
    }
  }

  return result;
}
profile
종착지이자 거점 A Destination

0개의 댓글