본문 바로가기

Study Note266

728x90
javascript #디자인패턴 - 객체 기반 데커레이터 패턴(decorator pattern) 하나의 객체에 여러 가지 기능들을 추가함으로써 기존의 객체에 추가로 꾸며진 객체를 만들어낼 수 있습니다. 데커레이터 패턴을 이용해 각기 다른 부품으로 이루어진 컴퓨터의 가격을 알아봅니다. 구현 결과 참고도서 : 속깊은 자바스크립트 5.4. 데커레이터 패턴 이전글 2021/02/10 - [Study Note/Javascript] - javascript #폼 검증을 위한 데커레이터 패턴 적용 javascript #폼 검증을 위한 데커레이터 패턴 적용 데커레이터 패턴 프락시 패턴은 호출되는 객체가 아닌 별도의 중간자 역할을 수행하는 프락시 객체가 추가 기능을 수행하는 패턴이라고 한다면, 데커레이터(decorator) 패턴은 호출 대상이 되는 simuing.tistory.com 2021. 2. 10.
javascript #디자인패턴 - 폼 검증을 위한 데커레이터 패턴(decorator pattern) 데커레이터 패턴 프락시 패턴은 호출되는 객체가 아닌 별도의 중간자 역할을 수행하는 프락시 객체가 추가 기능을 수행하는 패턴이라고 한다면, 데커레이터(decorator) 패턴은 호출 대상이 되는 객체에 추가 기능들을 자유롭게 추가하는 패턴입니다. 데커레이터 패턴을 유용하게 이용할 수 있는 곳은 바로 검증 도구입니다. 구현 (폼 검증을 위한 데커레이터 패턴 실용 예) First name: Last name: Age: Gender: Male Female 결과 필수 항목을 모두 기입하지 않은 경우 유효성체크를 통과하지 못한 경우 필수 항목을 모두 기입한 경우 # 참고도서 : 속깊은 자바스크립트 5.4. 데커레이터 패턴 참고할만한 문서 : ui.toast.com/weekly-pick/ko_20200102 2021. 2. 10.
프로그래머스 #정렬 - 가장 큰 수 lv2 제출 답안 function solution(numbers) { let answer = '', i, numbers_sort = [], number; if(Math.max(...numbers)===0) { return '0'; } for(i=0; in[1])].join('') return answer; } 풀이 과정 0만 들어 오는 경우 "0000" 으로 반환될 우려가 있으므로 제일 첫 부분에 체크하는 조건문을 작성하였다. 1000이하의 수가 주어진다는 점을 응용할 방법이 없을까 찾아보던 중 숫자를 반복하여 4자리 수로 만들면 된다는 사실을 알아내었다. 그 부분만 차용하여 문자열 내림차순으로 정렬시켰고 결과는 주어진 숫자를 join() 하여 return 하도록 하였다. 다른 사람들의 풀이 분석 다른 사람들의.. 2021. 1. 23.
프로그래머스 #데모 테스트 - 직사각형 마지막 한점 좌표 구하기 방법1 - 중복이 아닌 수를 구하여 반환 function solution(v) { let answer = [], position_x = [...new Set([v[0][0], v[1][0], v[2][0]])], position_y = [...new Set([v[0][1], v[1][1], v[2][1]])]; // x position setting let answer_x = v.filter(vv=>vv[0]==position_x[0]) if(answer_x.length===1) { answer.push(position_x[0]); } else { answer.push(position_x[1]); } // y position setting let answer_y = v.filter(vv=>vv[1]==p.. 2021. 1. 22.
프로그래머스 #완전탐색 - 모의고사 lv1 function solution(answers) { let result=[], answer, i, max_sum, j, supo_1 = [1,2,3,4,5], supo_2 = [2,1,2,3,2,4,2,5], supo_3 = [3,3,1,1,2,2,4,4,5,5], supo_sum = [0, 0, 0] for(i=0; i 2021. 1. 22.
프로그래머스 #월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 lv1 function solution(numbers) { let answer = [], i, j, len=numbers.length; for(i=0; i 2021. 1. 22.
프로그래머스 #정렬 - K번째수 lv1 function solution(array, commands) { //variables init let i, len = commands.length, command, answer = []; for(i=0; i a - b); //result set answer.push(command[commands[i][2]-1]) } return answer; } javascript 의 sort() 함수에 대한 기본기를 확인하는 문제였다. slice 한 배열을 정렬하기 위해 sort를 하는 경우 array.sort() 이렇게 쓰면 숫자가 문자열로 인식되어 1, 12, 2 순으로 정렬되게 된다. (기대값은 1, 2, 12) 숫자로 인식되게 하려면 어떻게 해야할까? 모질라 사이트에선 다양한 방법을 친절하게 알려주고 있다. .. 2021. 1. 20.
javascript #함수 호출 시 call(), apply() 로 this 설정 함수 호출 방법에 따른 this의 변화를 확인합니다. function whatsThis() { return this.toString(); } let unikys = { what: whatsThis, toString: function () { return "[object unikys]"; } } #1 whatsThis(); //"[object Window]" 일반함수: this = window #2 unikys.what(); //"[object unikys]" 멤버함수: this = unikys #3 whatsThis.call(); //"[object Window]" call 이용, 인자 없음: this = window #4 whatsThis.apply(unikys); //"[object unikys]" .. 2021. 1. 19.
javascript #성능 최적화하기 1. 변수 초기화 위치 통일 let a = 'h'; function abc () { let b = 'i'; console.log(a + b); } let a='h', b='i'; function abc () { console.log(a + b); } 2. 불필요하게 상위 스코프에 존재하는 변수를 가까운 로컬 변수로 이동 let outer = 0; (function () { for(let i=0; i 2021. 1. 18.
프로그래머스 #해시 - 베스트앨범 lv3 코딩테스트 연습 문제 한바퀴 돌고 돌아오면 리펙토링이 시급하다 ㅠ.ㅠ 결과가 맞더라도 더 나은 코드를 위해 연구를! function solution(genres, plays) { let answer = []; const len = genres.length; //노래갯수 const genresList = (function () { //고유번호 순서대로 한 리스트에 담기 const result = []; for(let i=0; i 2021. 1. 16.