문제

wanni kim·2021년 7월 30일
0
문제
객체를 요소로 갖는 배열과 id를 입력받아, 해당 id값을 가지고 있는 객체를 리턴해야 합니다.

입력으로 주어지는 배열은 재귀적 구조를 가지고 있습니다. (입출력 예시 참고)
배열이 요소인 객체가 'children' 속성을 가질 경우, 해당 값은 초기 입력(arr)과 같은 구조를 지닌 배열입니다.
중첩 구조의 깊이(depth)에는 제한이 없습니다.
함수 test7은 재귀 함수로 구현되어야 합니다.
입력받은 id를 가진 객체가 없을 경우, null을 리턴해야 합니다.

let input = [
  {
    id: 1,
    name: 'johnny',
  },
  {
    id: 2,
    name: 'ingi',
    children: [
      {
        id: 3,
        name: 'johnson',
      },
      {
        id: 5,
        name: 'steve',
        children: [
          {
            id: 6,
            name: 'lisa',
          },
        ],
      },
      {
        id: 11,
      },
    ],
  },
  {
    id: '13',
  },
];

let output = test7(input, 1);
console.log(output); // --> { id: 1, name: 'johnny' }

output = test7(input, 5);
console.log(output); // --> { id: 5, name: 'steve', children: [{ id: 6, name: 'lisa' }] }

output = test7(input, 99);
console.log(output); // --> null

function test7(arr, id) {
  // TODO: 여기에 코드를 작성하세요
  recursive니까 recursive에 맞는 함수를 작성한 다음에 다시 실행시켜주면 된다.
}
function test7(arr, num) {
  // TODO: 여기에 코드를 작성하세요
  // recursive니까 recursive에 맞는 함수를 작성한 다음에 다시 실행시켜주면 된다.

  // 처음에 접근하는 방법???

  for(let i =0; i < arr.length; i++) {
    if(arr[i].id === num) {
      return arr[i];
    }
    else if(Array.isArray(arr[i].children)) {
      let newArr = arr[i].children;
      let recursive = test7(newArr,num)
      return recursive;
    }
  }
  return null;
}

function test7(arr, num) {
  // TODO: 여기에 코드를 작성하세요
  // recursive니까 recursive에 맞는 함수를 작성한 다음에 다시 실행시켜주면 된다.

  // 이거를 처음에 어떻게 접근해야하나요????

  let newArr=[];
  for(let i =0; i < arr.length; i++) {
    if(arr[i].id === num) {
      return arr[i];
    }
    else if(Array.isArray(arr[i].children)) {
      let nextArr = arr[i].children
      newArr = newArr.concat(nextArr);
    }
  }
  if(newArr.length >0) {
    return test7(newArr, num)
  }
  return null;
}





사람들의 정보를 담은 배열을 입력받아 조건에 맞게 각 개인의 전체 이름을 요소로 갖는 배열을 리턴해야 합니다.

인자 1 : arr
배열을 요소로 갖는 배열
arr[i]는 한 개인에 대한 정보를 담고 있는 배열
arr[i]는 string 또는 number 타입을 요소로 갖는 배열
arr[i].length는 2
출력
string 타입을 요소로 갖는 배열을 리턴해야 합니다.
각 요소는 개인의 전체 이름은 이름(firstName)(lastName) 사이에 공백을 표기합니다.
사람들의 전체 이름은 각 개인의 나이순(오름차순)으로 정렬되어야 합니다.
이름과 성이 하나만 있는 경우, 하나만 표기합니다.
주의 사항
이름과 성이 모두 없는 경우는 없다고 가정합니다.
사람들의 나이는 18 이상 120 이하의 자연수입니다.
사람들의 나이는 전부 다르다고 가정합니다.
let list = [
  [
    ['firstName', 'Joe'],
    ['age', 42],
    ['gender', 'male'],
  ],
  [
    ['firstName', 'Mary'],
    ['lastName', 'Jenkins'],
    ['age', 36],
    ['gender', 'female'],
  ],
  [
    ['lastName', 'Kim'],
    ['age', 40],
    ['gender', 'female'],
  ],
];

let output = test5(list);
console.log(output); // --> ['Mary Jenkins', 'Kim', 'Joe'];
profile
Move for myself not for the others

0개의 댓글