벨로그 글을 추천받아서 읽어보았다.
(번역) 데이터 구조를 개선하여 코드 43% 줄이기
https://velog.io/@lky5697/react-junior-code-review-and-refactoring
배열 대신 Set로 checkedState를 사용하는 것입니다. 객체로 사용할 수도 있었지만, Set는 우리가 꽤 많이 사용하는 size에 접근하는 것과 같은 약간의 이점이 있습니다. Map과 비교하면 키-값 대신 선택한 모든 항목의 id만 알면 되기 때문에 Set이 약간 더 적합합니다.
여러개의 체크박스들을 배열 대신, set을 사용하여 데이터 구조를 개선하라는 내용이었다.
평소에 Set을 써보지 않아서 흥미롭게 읽은 글인데, 그렇다면 Set이 뭐고, 왜 Array보다 좋은지? 에 대해서 공부해보게 되었다.
const set1 = new Set(); // Set(0) {}
const set2 = new Set([1,2,3]) // Set(3) {1, 2, 3}
const set3 = new Set([1,2,2,3,3]) // Set(3) {1, 2, 3} (중복 제거됨)
const set = new Set([1,2,3]) // Set(3) {1, 2, 3}
set.has(2) // true
set.add(4) // Set(4) {1, 2, 3, 4}
set.delete(3) // Set(3) {1, 2, 4}
set.size // 3
Set은 해시테이블 자료구조를 갖고 있다고 한다.
해쉬테이블은 (Key, Value)로 데이터를 저장하는 자료구조이다.
키(Key), 해시함수(Hash function), 해시(hash), 값(value), 저장소(bucket)로 이루어져 있다.
해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다
해시테이블 자료구조를 이해하는데에 도움이 되었던 유튜브 영상
array.includes()
set.has()
array.push()
set.add()
array.filter()
set.delete()