트리구조 검사 O(n^2) 개선하기

Tony·2022년 2월 23일
0

react

목록 보기
46/82

list[] 와 listAchildren[] 중 하나라도 겹치는 부분이 있는지 검사하는 것을 개선

  • listAchildren의 parentId(listA의 id)를 list[] 컴포넌트에 전달해서
  • list[] 의 아이템들의 parentId가 listA의 id와 같은지 비교
interface List {
  id: string;
  parentId: string; // parentId가 데이터 모델링에 포함되어야 하는 것이 핵심
  contents: any;
  children?: List;
}

// e.g.,
const list: List[] = [
  {
    id: 'a1',
    parentId: 'a',
    contents: 12
  },
  {
    id: 'a2',
    parentId: 'a',
    contents: 34
  },
  {
    id: 'b8',
    parentId: 'b',
    contents: 11
  },
]

const listAchildren: List[] = [
  {
    id: 'a1',
    parentId: 'a',
    contents: 12
  },
  {
    id: 'a2',
    parentId: 'a',
    contents: 34
  },
  {
    id: 'a3',
    parentId: 'a',
    contents: 56
  },
  {
    id: 'a4',
    parentId: 'a',
    contents: 78
  },
]

const listAId = "a"; // props로 전달 받음
const isIncluded = list.some((item) => item.parentId === listAId);

console.log(isIncluded);
profile
움직이는 만큼 행복해진다

0개의 댓글