전체 글 89

[프로젝트] 딴짓추적표 | 트러블슈팅-Cannot read properties of null

(진행배경) 아래 코드와 같이 localStorage에서 데이터 파싱을 시도하자 위와 같은 cannot read properties of null(reading 'notes') 에러가 나타났다. 'notes' 값을 읽어오지 못하고 있는 것이다. // 파싱한 데이터를 화면에 그리기 function showNotes() { const showData = parseSavedData(); console.log('showData', showData); for (let i = 0; i < showData.notes.length; i++) { const note = showData.notes[i]; const solution = showData.solutions[i]; const select = showData.se..

[Redux-Toolkit] Redux와 Redux Toolkit 사용법 비교하기

항상 헷갈렸던 react-redux를 이번 기회에 복습해보았다. 대세로 자리잡은 react-redux-toolkit과 toolkit을 사용하지 않은 버전은 어떻게 다른지 비교해보고자 한다. 내용은 생화코딩 강좌의 리덕스편을 참고하였다. [리덕스란?] 리덕스는 리액트와 가장 많이 사용되지만, 사실 자바스크립트 기반이기만 하면 사용할 수 있는 상태관리 라이브러리이다. 상태는 오로지 읽을 수만 있고, 상태를 변경하기 위해서는 액션(action)을 발생시켜야 한다. [리덕스 툴킷이란?] 리덕스 툴킷은 리덕스에서 공식적으로 추천하는 helper 라이브러리이다. redux-devtools, redux-thunk 등의 라이브러리가 미리 포함되어 있다. 먼저 코드로 다른점을 파악해보자. [1. React-Redux] ..

React/react-redux 2023.09.20

프로그래머스- 2차원으로 만들기

프로그래머스 레벨 0 Day10에 돌입했다. 2차원 배열은 코딩테스트에 단골로 등장하는 문제이니 만큼 잘 짚고 넘어가는게 중요하겠다. [0,1,2,3,4,5,6,7,8] 에서 slice 메소드를 활용해 n길이 만큼 뽑아내는 것 까지는 성공하였으나, 요소간 중복되지 않고 [[0,1], [2,3], [4,5], [6,7]] 와 같이 뽑아내는데 아래와 같이 어려움을 겪었다. // 시도과정 function solution(num_list, n) { let arr = []; for (let i = 0; i < num_list.length; i++) { arr.push(num_list.slice(i, i + n)); // arr [[1,2], [2,3], [3,4], [4,5], [5,6]...] // 원하는 답:..

프로그래머스-진료 순서 정하기

[배운점] 배열 복사는 스프레드 연산자인 점 까먹지 말기!! - 오답: emergency.sort((a,b) => b-a) - 정답: [...emergency].sort((a,b) => b-a) [indexOf 메소드] arr.indexOf(searchElement[, fromIndex]) - searchElement: 배열에서 찾을 요소 - fromIndex (옵션): 검색을 시작할 인덱스. 이 값을 생략하면 배열의 처음부터 검색을 시작함. [indexOf 예시] const animals = ["cat", "dog", "elephant", "bee", "ant"]; console.log(animals.indexOf("cat")); // 0 console.log(animals.indexOf("elepha..

[트러블슈팅] failed to push some refs to.. 와 Diverging branches can't be fast-forwarded 에러 해결하는 법

(진행배경) 로컬 브랜치에 있는 내용을 원격 브랜치로 commit 후 push 하려고 하자 다음과 같은 에러가 나타났다. $ git push origin main To https://github.com/user/documents ! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/user/documents.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'g..

Git/트러블슈팅 2023.08.23

프로그래머스-외계행성의 나이

[시도과정] function solution(age) { // 초기값: 문자열 let answer = ''; //age는 number이므로 문자로 바꾸기 let str = String(age); // 23 --> "23" //문자를 각 배열로 만들어 주기 let arr = Array.from(str); // "23" --> ["2", "3"] let match = { "0":"a", "1":"b", "2":"c", "3":"d", "4":"e", "5":"f", "6":"g", "7":"h", "8":"i", "9":"j" } answer = arr.forEach((el) => match[el]); //["c", "d"] return answer; } 지난 시간 배운 Array.from 메소드를 활용하여..

프로그래머스-특정 문자 제거하기

// 오답: 실행시간 10초 이상 소요 function solution(my_string, letter) { var answer = ''; for (let i = 0; i < my_string.length; i++) { while (my_string[i] === letter) { answer = my_string.replace(letter, ''); } } return answer; } [오답노트] replace 메소드와 정규 표현식을 사용할 경우 for 루프는 필요하지 않다. // 오답: 테스트 케이스 1개만 통과 function solution(my_string, letter) { let answer = ''; for (let i = 0; i < my_string.length; i++) { if (m..

[프로젝트] 딴짓추적표 | 4. 드롭박스로 카테고리 만드는 법

딴짓을 하게된 계기를 기록하고 대처하는 차원에서 딴짓 원인을 기록하기로 하였다. 사용자는 아래와 같이 3가지 항목중 하나를 드롭박스 옵션에서 골라 선택할 수 있다. 내부계기(딴짓을 하게 된 원인이 나로부터 발생한 경우: 피로감, 스트레스 등) 외부계기(딴짓을 하게 된 원인이 외부로부터 발생한 경우: 스마트폰 알림, 전화 등) 잘못된 계획(딴짓을 하게 된 원인이 잘못된 계획으로부터 발생한 경우) [배운점] 1. 콜백함수의 선언과 호출 // createNote.js // 메모 레이아웃 그리기 export function createNote(noteValue, selectValue) { const notesContainer = document.querySelector('.notesContainer'); // ..

프로그래머스-짝수 홀수 개수

// 시도과정 function solution(num_list) { var answer = []; for (let i = 0; i < num_list.length; i++) { let even = []; let odd = []; if (num_list[i] % 2 == 0) { console.log('짝수들:', num_list[i]); even.push(num_list[i]); console.log('짝수테스트:', even); } else if (num_list[i] % 2 !== 0) { console.log('홀수들:', num_list[i]); odd.push(num_list[i]); console.log('홀수테스트:', odd); } answer.push(even.length); answer..

프로그래머스-직각삼각형 출력하기

// 정답 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; // input은 빈 배열 rl.on('line', function (line) { // line은 문자 -> "3" input = line.split(' '); // 단어별로 잘라서 배열에 담기 -> [3] }).on('close', function () { let number = Number(input[0]); // "3" -> 3 for( let i = 1; i 문자열만 받는다. 예) "hi".repeat(5) // "hihihihihi"..

728x90
LIST