💡 지금까지는 배열안의 중복되는 값을 1번과 같이 fileter와 indexOf를 이용하여 제거하였다. 하지만, 이는 시간복잡도가 O(n^2)임을 알 게 된 후, 개선된 방법에 대해 고민하였다. 그러다 최근에 정리한 new Set이 떠올랐고 Set을 이용한 방법을 소개하려고 한다. 1. filter && indexOf ⇒ O(n^2) let arr = [1, 2, 3, 1, 1, 3, 2]; arr = arr.filter((num, idx) => arr.indexOf(num) === idx) 2. new Set이용 ⇒ O(n)??⭐️ let arr = [1, 2, 3, 1, 1, 3, 2]; arr = [...new Set(arr)]; new Set은 중복된 값을 자동으로 제거 한다는 점을 이용하여, 위..
ES6 문법에서 추가된 Map과 Set 에 대해 알아보자. 나의 친구 mdn을 참고했다.(참고링크) 1. Map The Map object holds key-value pairs and remembers the original insertion order of the keys. Any value may be used as either a key or a value. 위의 뜻만 보면 key-value pairs로 데이터를 저장한다는 점에서 Object와 차이를 느끼기 힘들어 보인다. 그치만 만약 똑같다면 ES6에서 굳이 추가 됐을 이유가 없다. Object와 Map의 차이점에 대해 알아보도록 하자.( 참고링크 ) Map vs Object 1. key Types Object의 경우, key 값으로 strin..
💡 쓰면 편하지만, 자주 안써서 잘 까먹는 정규표현식에 대해 정리해보자! 사실 이렇게 정리하게 된 것은 프로그래머스 알고리즘을 풀다 정규표현식을 이용하면 굉장히 편리해지는 문제를 만나게 되었기 때문이다. 그래서 해당 문제를 풀면서 정리를 해보고자 한다. 정규표현식 내용에 대해서는 아래 링크, mdn에서 정말 많은 도움을 얻었다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions 정규 표현식 - JavaScript | MDN 정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있..
💡 자바스크립트를 이용하여, 직접 날짜와 시간을 계산하는 코드를 짤 수도 있지만 보다 편리하게 dayjs를 이용하여 날짜에 대한 처리를 하는 방법에 대해 정리해보자. WHY dayjs? 사실, Moment.js라는 날짜와 관련된 유명한 라이브러리가 있음에도 왜 요즘 다들 dayjs를 쓰는 걸까? 1. moment.js의 API형식은 그대로유지 2. 용량은 33배 가볍다 즉, 성능은 거의 차이가 나지 않지만 훨씬 가볍다! How to use [설치] npm i dayjs 명령어를 통해, 설치 import하기 참고링크: https://github.com/iamkun/dayjs/issues/475 //처음에는 아래와 같은 방식을 사용했지만, import가 되지 않았다. //js파일에서는 정상적으로 import..
참조형 데이터 타입을 다루다 보면 접하게 되는 깊은 복사와 얕은 복사에 대해 기본개념, 예시, 활용법까지 모두 다 정리해보자. 1. 기본 개념 깊은 복사(Deep Copy) 데이터 자체를 통째로 복사 한다. 데이터 자체를 통째로 복사 했기에, 새로운 주소를 가진다. 즉, 복사된 두 개의 객체는 서로 독립적인 메모리를 가지게 된다. 기본형 데이터의 경우 깊은 복사가 되지만, 참조형은 일반적으로 그렇지 않다. 얕은 복사(Shallow Copy) 데이터의 주소값만 복사한다. 즉, 복사된 두 개의 객체는 서로 같은 메모리를 가르키고 있다. 2. 예시 위 개념을 통해, 일반적으로는 기본형 타입의 데이터의 경우 깊은 복사가, 참조형 데이터의 경우 얕은 복사가 일어남을 알 수 있었다. 이를 실제 예시를 통해 확실히 ..