Set이란? 중복되지 않는 유일한 값들의 집합 키가 없는 값이 저장된다. 값들이 삽입된 순서를 유지한다. 인덱스로 요소에 접근할 수 없다. 내부적으로 해시테이블을 사용한다. 해시 테이블은 데이터를 저장하는데 사용되는 자료구조 중 하나로, 키값과 밸류값을 쌍으로 저장해 키를 기반으로 값을 검색한다. Set은 내부적으로 이를 이용해 데이터를 저장하는데, Set에 값을 추가하면 해시 함수를 사용해 값의 해시를 계산하고, 값이 저장될 위치를 결정한다. 이처럼 해시 테이블을 기반으로 구현되었으나 Set에서는 값만 저장하므로 값의 중복을 허용하지 않아 고유한(유일한) 값의 집합을 관리하기 적합하다. Set 객체 사용하기 Set 생성하기 new 키워드를 사용해 생성한다. const set1 = new Set([1, ..
Map이란? 키-값 쌍으로 데이터를 저장하는 콜렉션 문자열, 숫자, 함수까지 어떤 값이든 키로 사용할 수 있다. 객체는 키로 문자열과 심볼만 사용할 수 있다. 데이터를 삽입한 순서를 보존하는, 반복 가능한 이터러블 객체다. 따라서 for of 루프, for in 루프, forEach() 메서드까지 사용할 수 있다. 객체는 이터러블하지 않다. 키를 사용하는 for in 루프는 쓸 수 있지만, iteration protocol을 구현하지 않기 때문에 직접 반복할 수 없다. 따라서 iteration protocol을 구현하거나 Obj.keys() 메서드, Obj.entrues() 메서드를 사용해서 반복 가능한 항목을 얻을 수 있다. Size 프로퍼티로 크기를 바로 확인할 수 있다. 객체는 객체의 크기를 나타..
1. 실행 콘텍스트란? 코드가 실행되기 위해 필요한 환경을 제공하며, 실행 중인 코드의 상태를 나타내는 객체 변수, 함수 선언, 매개 변수 등을 포함한 스코프 정보와 this 값, 외부 환경 정보, 실행 순서 등을 {key: value} 형태로 담고 있다. 실행 콘텍스트는 크게 전역 콘텍스트와 함수 콘텍스트로 나눌 수 있다. 전역 콘텍스트는 스크립트가 로드되면 가장 먼저 생성되는 컨텍스트로 전역 변수와 전역 함수 등을 포함한다. 함수 콘텍스트는 함수가 호출될 때마다 생성되며, 각각의 함수에 대한 지역 변수와 매개 변수, 내부 함수를 포함한다. var x = 10; function foo() { var y = 20; console.log(x + y); } function bar() { var z = 30;..
1. 변수 구분 변수는 로컬(지역) 변수와 글로벌(전역) 변수 2가지 종류가 있다. 이렇게 종류가 나눠진 이유는 각 변수의 기능과 목적이 다르기 때문이다. 로컬 변수 함수 내에서 선언된 변수로 해당 함수의 스코프에서만 유효하다. 그래서 함수가 실행되면 생성되고 실행이 끝나면 소멸한다. 로컬 변수는 함수 내에서만 접근이 가능하며 외부에서는 이 변수에 대해 접근할 수 없다. 그래서 서로 다른 함수에서는 동일한 이름의 로컬 변수를 사용할 수 있다. (각 함수의 스코프가 다르기 때문에 충돌이 일어나지 않는다.) 글로벌 변수 전역 스코프에서 선언되고 사용되는 변수로 어디에서든 접근 가능한 가장 바깥 쪽의 스코프로, 함수 밖에서 선언된 것들을 의미한다.글로벌 변수는 다른 JS 파일에서 변수 값을 공유할 수 있고, ..
알고리즘 문제를 풀다 보면 for문이 아니라 for of를 사용해 문제를 푸는 경우를 종종 본다. 왜 for of를 쓰는지, for of는 for문이랑 뭐가 다른지 궁금했다. 공부 중인데 아래 영상들의 예시가 직관적이고 설명이 자세해서 도움이 된다. 1. 우아한테크 파노님 2. 유튜버 Taehoon님
📌 정규표현식 문자열에서 특정 문자 조합을 찾기 위한 패턴 js에서는 정규표현식도 객체로서 RegExp의 exe(), test() 메서드를 사용할 수 있다. 이외 String의 match(), matchAll(), replace(), replaceAll(), search(), split()과도 사용할 수 있다. 간단한 문법은 기존에 포스팅해서 생략했다. 물론 다 까먹어서 다시 봐야하지만 🥺 1) 정규표현식 만들기 슬래시로 패턴 감싸기 (a와 c 사이에 b가 하나 이상 있어야 하는 문자열을 찾아내는 패턴) const re = /ab+c/ RegExp 객체의 생성자 호출 const re = new RegExp('ab+c') 2) 정규표현식 뒤에 붙는 플래그 플래그는 아래와 같이 정규표현식에 지정할 수 있다...
Array.prototype.filter() arr.filter(callback(element[, index[, array]])[, thisArg]) 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다. 1) 매개변수 callback : 각 요소를 시험할 함수로 true 반환 시 요소를 유지, false 반환 시 요소를 버림. element : 처리할 현재 요소 index : 처리할 현재 요소의 인덱스 array : filter를 호출한 배열 thisArg : callback을 실행할 때 this로 사용하는 값 2) 반환 값 테스트를 통과한 요소로 이뤄진 새로운 배열. 어떤 요소도 테스트를 통과하지 못하면 빈 배열 반환. 3) 명명되지 않은 매개변수 (Unnamed paramete..
Array.prototype.map arr.map(callback(currentValue[, index[, array]])[, thisArg]) 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. 1) callback : 새로운 배열 요소를 생성하는 함수로 다음 세 가지 인수를 가짐 currentValue : 처리할 현재 요소 index : 처리할 현재 요소의 인덱스 array : map()을 호출한 배열 thisArg : callback을 실행할 때 this로 사용되는 값 2) map 메소드란 callback 함수의 각각 요소에 대해 한번씩 순서대로 불러 그 함수의 반환값으로 새로운 배열을 만든다. callback 함수는 배열 값이 들어 있는 인덱스에 대해서..
1. Array.prototype.splice() array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가해 배열의 내용을 변경한다. 1) start : 배열의 변경을 시작할 인덱스 배열의 길이보다 클 경우 배열의 길이에서부터 시작된다. 음수일 경우 배열의 끝에서부터 요소를 센다. 절대값이 배열의 길이보다 큰 경우 0으로 세팅한다. 2) deleteCount : 배열에서 제거할 요소의 수 이 부분을 생략하거나 값이 array.length - start보다 큰 경우 start부터 모든 요소를 제거한다. 이 부분이 0 이하라면 어떤 요소도 제거하지 않는다. 3) start : 배열의 변경을 시작할 인덱..
경계 : \w로 word 선택하기 이전 글에서 어떤 범위를 지정할 때 [-]를 사용했었다. (ex. [a-z]) 경계를 사용하면 보다 간략하게 표시할 수 있다. w는 word라는 뜻인데, 이 word에는 알파벳(대소문자) + 숫자 + _(언더바)가 포함된다. ✏️ 예시) [Case 1] \w - 알파벳 숫자 언더바 모두가 선택된다. [Case 2] \w* - 수량자 '*'의 의미는 0~1~여러 개를 뜻한다. 위와 같아보이지만 First match에서 A / A1로 다르다. ✏️ 예시) [Case 3] [a-z]\w* - 소문자 중 아무거나로 시작하고 문자면 0~1~여러 개를 선택한다. - 그래서 c부터 시작하며 공백이나 콜론, 대시를 제외한 단어들이 선택된다. [Case 4] \w{5} - 중괄호 안의 ..