반응형

JavaScript 21

[프로그래머스] 카카오 - 파일명 정렬

문제2018 카카오 블라인드 채용 - [3차] 파일명 정렬https://school.programmers.co.kr/learn/courses/30/lessons/17686  예시 코드function solution(filenames) { const parsedFilenames = filenames.map(parseFilename); parsedFilenames.sort((a, b) => { if (a.head b.head) return 1; return a.number - b.number; }); return parsedFilenames.map((file) => file.name);}function parseFilename(filename) { const regex = /^([^\d..

React - UI를 위한 JavaScript 라이브러리

들어가며 웹/앱 관련 분야에 계시다면 react에 대해서 많이들 들어보셨을 텐데요. react는 'UI를 위한 자바스크립트 라이브러리'입니다. SPA(Single Page Application)를 구축하는 데 사용이 됩니다. 이번 시간에는 react에 대해서 알아보려고 합니다. 주요 개념부터 알아보자 react를 이해하기 위해서 아래 개념들을 알아둘 필요가 있습니다. 컴포넌트(Component) react의 핵심은 바로 '컴포넌트'라는 개념입니다. 컴포넌트는 UI에서 독립적이고, 재사용 가능한 부분을 나타냅니다. 각 컴포넌트는 자신의 상태와 로직을 관리합니다. 컴포넌트가 클래스로 구성되면 클래스 컴포넌트, 함수로 구성되면 함수 컴포넌트라고 부릅니다. 상태(State)와 속성(Props) state는 컴포..

React 2023.12.16

onBlur 이벤트와 마우스 이벤트

들어가며 이번에 사이드 프로젝트를 진행하며 겪은 문제에 대해 얘기해 보고자 합니다. 검색어 자동 완성 기능을 구현하는 게 목표였는데요. 검색어를 입력하면 해당 글자를 포함한 상품이 있는 경우 리스트로 표시해 줍니다. 리스트 아이템을 클릭하면 해당 검색 결과로 이동합니다. 검색창 외부를 클릭하면 onBlur 이벤트가 발생해 리스트가 사라지도록 했는데요. (onBlur 이벤트는 요소가 포커스를 잃었을 때 발생합니다.) 문제 문제는 리스트 아이템을 클릭할 때도 onBlur 이벤트가 발생해 리스트가 사라지고 검색 결과로 이동하지 않았습니다. 왜 이런 일이 발생한 걸까요? 마우스 클릭 이벤트에 대해 살펴보겠습니다. 마우스 클릭 이벤트는 크게 세 단계로 발생합니다. onMouseDown -> onMouseUp ->..

[JS] 큐(Queue) 구현하기: 배열 vs 연결 리스트 vs 두 개의 스택

들어가며큐(Queue)는 중요한 자료구조 중 하나로, FIFO(First-In-First-Out) 특성을 가지는데요. 첫 번째로 들어간 요소가 가장 먼저 나옵니다. 이번 포스트에서는 자바스크립트를 사용하여 큐를 구현하는 세 가지 방법에 대해 알아보겠습니다. 1. 배열을 이용한 구현자바스크립트에서 가장 간단하게 큐를 구현하는 방법은 배열(Array)을 사용하는 것입니다.push 메서드로 새 요소를 추가하고, shift 메서드로 첫 번째 요소를 제거합니다. enqueue는 O(1)에 수행됩니다.dequeue는 O(n)에 수행됩니다. 배열에서 첫 번째 요소를 제거하면 모든 요소가 한 칸씩 앞으로 이동해야 하기 때문입니다. 아래는 구현 코드입니다.class Queue { constructor() { th..

Javascript 2023.10.23

JavaScript에서 얕은 복사와 깊은 복사 이해하기

들어가며 JavaScript를 사용하다 보면 객체나 배열과 같은 참조형 데이터를 다루게 되는데요. 참조형 데이터를 복사할 필요가 있을 때, 얕은 복사와 깊은 복사라는 개념이 중요하게 작용합니다. 이번 포스트에서는 JavaScript에서 얕은 복사와 깊은 복사에 대해 알아보겠습니다. 얕은 복사 (Shallow Copy) 얕은 복사는 이름처럼 복사하는 깊이가 얕은데요. 객체를 한 단계까지만 복사할 수 있습니다. 객체를 복사할 때 원시 값의 경우 값을 그대로 복사하지만, 객체의 경우 참조 값, 즉 객체가 저장되어 있는 메모리 주소를 복사하는데요. 그렇기 때문에 얕은 복사를 통해 만들어진 객체를 수정하면 원본 객체에 영향을 미칠 수 있으므로 주의해야 합니다. 몇 가지 예시를 들어볼게요. 1. 배열의 slice ..

Javascript 2023.10.16

JavaScript의 데이터 타입에 대해 알아보자!

이번 시간에는 자바스크립트의 데이터 타입에 대해 알아보도록 하겠습니다. 데이터 타입이란 데이터 타입이란 프로그래밍에서 변수 또는 객체가 가질 수 있는 값의 종류를 말합니다. 예를 들어, Number 타입은 숫자 값을, String 타입은 텍스트 문자열 값을 가질 수 있습니다. 데이터 타입의 필요성 데이터 타입은 다음과 같은 이유로 필요합니다. 1. 값을 저장하고 참조할 때 필요한 메모리 크기를 정해야 합니다. 2. 메모리에서 읽어 들인 2진수 값을 어떻게 해석해야 할지 알아야 합니다. 3. 연산자는 종종 피연산자의 데이터 타입에 따라 다르게 동작합니다. 예를 들어, "+" 연산자는 Number 타입에 대해서는 덧셈을 수행하지만, String 타입에 대해서는 두 문자열을 연결합니다. 데이터 타입의 종류 자..

Javascript 2023.10.09

JavaScript에서 변수란 무엇일까?

들어가며 이번 시간에는 가장 기본이 되는 개념 중 하나인 변수에 대해 간단히 알아보도록 하겠습니다. 변수란 무엇인가 변수는 하나의 값을 저장하는 메모리 공간을 가리키는 이름입니다. 변수는 식별자이기도 한데요. 식별자란 무언가(변수, 함수, 클래스 등)를 식별하기 위한 이름입니다. 우리가 어떤 값을 쓰고자 한다면 먼저 변수를 선언하고 값을 할당해주어야 합니다. 변수 선언이란 변수를 생성하는 것을 말합니다. 값을 저장할 수 있는 크기만큼의 메모리 공간을 확보하고, 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있도록 준비하는 건데요. 이렇게 확보된 공간은 해제되기 전까지 누구도 사용할 수 없도록 보호되어 안전합니다. 자바스크립트 엔진은 변수 선언을 다음과 같은 2단계에 걸쳐 수행합니다. 선언 단계: ..

Javascript 2023.09.25

JavaScript에 대해 알아보자!

들어가며 "웹 개발" 하면 빼놓을 수 없는 자바스크립트! 그럭저럭 사용하고는 있지만 아직 잘 모르겠다고 느끼시진 않나요? 이번 시간에는 알듯 말듯 잘 모르겠는 자바스크립트에게 한 발짝 다가가 보도록 하겠습니다. 자바스크립트란? 자바스크립트는 웹 브라우저에서 동작하는 유일한 프로그래밍 언어입니다. 웹 페이지에 동적인 요소들을 추가하고, 사용자와 상호작용 할 수 있도록 도와줍니다. 예를 들어 다음과 같은 일들을 할 수 있습니다. 버튼을 클릭하면 팝업창이 나타납니다. 어떤 항목을 선택하면 관련 정보가 화면에 표시됩니다. 스크롤 위치나 브라우저 크기 변화 등 사용자의 화면 조작에 따라 다른 내용이 표시됩니다. 폼 데이터를 검증하여 올바르지 않은 입력 시 경고 메시지를 보여줍니다. 이런 자바스크립트 없이 HTML..

Javascript 2023.09.16