Javascript

Javascript/Vue

[Vue] axios로 데이터 받은 후 렌더링하는 방법

데이터를 받기 전에 렌더링을 한 후 데이터를 받고 리렌더링을 해서 화면 깜빡임이 발생했다. SPA의 장점 중 하나는 어플리케이션을 쓰는 것 처럼 움직임이 부드럽다는 것인데 그 장점을 활용할 수 없는 문제가 있었다. 처음에 방법을 바로 생각해내지 못해서 created에 await을 사용하는 등 여러 시도를 해 보았지만 잘 되지 않았었다. 가장 간단한 방법은 v-if였다. {{data.context}} 데이터가 없으면 렌더링을 하지 않고 데이터가 있으면 렌더링을 한다.

Javascript/문제풀이

[프로그래머스] Lv. 2 게임 맵 최단거리

문제 문제 링크 설명 BFS로 풀었다. 공간 절약을 위해 visited 배열을 따로 만들지 않았다. 시작 좌표의 값을 2로 둔다. 다음 칸을 탐색할 때 이전 칸의 값에 1을 더한 값을 저장한다. 도착 지점의 값에 1을 빼준 값이 답이다. while문이 끝날 때 까지 return되지 않았으면 도착할 수 없는 경우이므로, -1을 return한다. 아래는 bfs를 돌렸을 때 maps 배열의 예시이다. [ [ 2, 0, 10, 11, 12 ], [ 3, 0, 9, 0, 11 ], [ 4, 0, 8, 9, 10 ], [ 5, 6, 7, 0, 11 ], [ 0, 0, 0, 0, 12 ] ] 코드 function solution(maps) { let n = maps.length; let m = maps[0].leng..

Javascript/문제풀이

[프로그래머스] Lv. 2 n^2 배열 자르기 - 자바스크립트 풀이

문제 문제 링크 설명 구현 방법은 다양할 수 있다. 시간복잡도를 고려해야 통과할 수 있다. right - left + 1만큼만 반복문을 돌릴 수 있는 방법을 생각해보자. 틀린 코드 1. 처음부터 끝까지 2차원 배열을 생성하고 2. 1차원 배열로 변환한 후 3. left부터 right까지 slice한다. 하지만 n이 10^7까지 될 수 있어서 역시 이 방법으로는 통과할 수 없었다. function solution(n, left, right) { let answer = []; let arr = []; for(let i = 1; i

Javascript/문제풀이

[프로그래머스] Lv. 2 구명보트 - 자바스크립트 풀이

문제 문제 링크 설명 문제에서 "구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없다" 라는 조건을 늦게 발견해서 오래걸렸다. people 배열을 정렬한 후, 양쪽 끝을 더해준다. limit를 초과하면 left++만 하고, limit를 초과하지 않으면 left++과 right--를 해준다. 코드 function solution(people, limit) { let answer = 0; let left = 0; let right = people.length - 1; people.sort((a, b) => b - a); while (left

Javascript/React

[React & Jest ] 리액트 오픈소스 아주 살짝 구경해보기

언젠가 React같은 큰 프로젝트에 기여를 해보고 싶다. React 작동 방식 공부도 할 겸 소스코드를 구경해보기로 했다. 💡오픈소스 이해하는 꿀팁 테스트코드를 먼저 보세요! 테스트코드를 먼저 보면 코드를 이해하는데 도움이 된다고 한다. 역시, 어렵다. 하지만, 한가지는 알겠다. 아래의 코드를 보자. ⌨️코드 원본 코드 링크 it('renders an empty fragment', () => { const Div = () => ; const EmptyFragment = () => ; const NonEmptyFragment = () => ( ); ReactDOM.render(, container); expect(container.firstChild).toBe(null); ReactDOM.render(, ..

Javascript/문제풀이

[프로그래머스] Lv. 2 [1차] 캐시 - 자바스크립트 풀이

문제 문제 링크 설명 cache hit일때, 삽입정렬을 응용해서 풀었다. 코드 function solution(cacheSize, cities) { const CACHE_HIT_TIME = 1; const CACHE_MISS_TIME = 5; let cache = Array.from({ length: cacheSize }); let total = 0; for (let city of cities) { city = city.toLowerCase(); let idx = cache.indexOf(city); if (idx !== -1) { // cache hit for (j = idx - 1; j > -1; j--) { cache[j + 1] = cache[j]; } cache[0] = city; total +..

Javascript/기타

[Javascript] findIndex()와 indexOf()의 차이

✅공통점 자바스크립트에서 findIndex()와 indexOf()는 둘 다 배열(Array)에서 특정 값을 찾는 메서드이다. 하지만 둘 사이에는 몇 가지 중요한 차이점이 있다. ❌차이점 비교 방식의 차이 findIndex(): 배열의 각 요소에 대해 콜백 함수를 실행하며, 콜백 함수의 반환값이 true인 첫 번째 요소의 인덱스를 반환한다. 즉, 콜백 함수에 사용자 정의의 비교 로직을 적용할 수 있다. indexOf(): 주어진 값과 배열의 요소를 엄격한(===) 비교를 통해 찾는다. 값의 타입과 값이 모두 일치하는 요소를 찾아 인덱스를 반환한다. 사용 가능한 환경의 차이 findIndex(): ECMAScript 2015(ES6)에서 도입된 메서드로, 브라우저 및 일부 환경에서 지원하지 않을 수 있다. ..

Javascript/문제풀이

[프로그래머스] Lv.3 이중우선순위큐 - 자바스크립트 풀이

문제 문제 링크 설명 원래는 힙 2개를 사용해서 푸는 문제이다. 하지만 프로그래머스에서는 배열 1개로 풀어도 통과된다 다음에는 힙을 직접 구현해서 풀어보고싶다. 코드 function solution(operations) { let queue = []; for(let operation of operations){ if (operation ==='D 1'){ let max = Math.max(...queue); let deleted = false; let newQueue = []; for(let q of queue){ if(q===max){ if(!deleted){ deleted = true; } }else{ newQueue.push(q); } } queue = newQueue; } else if(opera..

리즈(Liz)
'Javascript' 카테고리의 글 목록 (2 Page)