본문 바로가기

Programming Language/JavaScript

[JavaScript]fs 라이브러리 💡 참고자료 Node.js fs 모듈 훌륭한 블로그1 훌륭한 블로그2 access log파일의 Line 업데이트를 감시하고, 한 줄씩 다른 애플리케이션으로 전송하고자 한다. 해당 기능을 Node.js로 구현하기 위해 fs 라이브러리가 필요하다 들었다. 감시 기능을 구현하기 앞서, fs 라이브러리가 무엇인지 살펴보고 실습을 해본다. 해당 글은 다음과 같은 순서로 되어있다. 정의 종류 사용법 read, write 실습하기 정의 파일 시스템으로 접근과 상호작용 등 유용한 기능을 제공한다. 설치할 필요없이 require 하여 사용가능하다. const fs = require('fs'); 종류 fs.access(): check if the file exists and Node.js can access it with.. 더보기
[JS]재귀함수 예제3 Q3. 다차원 배열을 입력받아 1차원 배열로 변환하여 리턴해야 합니다. function flattenArr(arr) { if (arr.length === 0){return []} // 빈 배열 입력 처리 const head = arr[0] const tail = arr.slice(1) // head와 tail을 활용하여 arr를 재귀적으로 순회 if (Array.isArray(head)){ return flattenArr([...head, ...tail]) // 전개구문 } else { return [head].concat(flattenArr(tail)) // 재귀적으로 tail을 호출하며 최종적으로는 평평한 배열이 출력 } } arr를 반복문 사용하지않고 재귀호출로 순회할 수 있는 방법으로 head와 .. 더보기
[JS]재귀함수 예제2 Q1. 러시아 전통인형 마트료시카에 대한 정보를 담은 객체와 수를 입력받아 조건에 맞는 인형이 있는지 여부를 리턴해야 합니다. - 실패 function findMatryoshka(matryoshka, size) { if (matryoshka === null){return false} else if (matryoshka.size === size){return true} findMatryoshka(matryoshka.matryoshka, size) return false } 항상 빈 배열, 빈 객체와 같은 예외적인 경우를 먼저 처리해줘야 한다고 생각하여 null 값을 먼저 처리해줬다. 하지만 재귀적으로 함수가 실행되게 해야하므로, 오히려 걸리적거리는 옵션이다. 굳이 써줄 필요가 없었다. 위와 같이 그저 재귀.. 더보기
[JS]재귀함수 예제1 기본적인 재귀함수는 전에 풀어보았다. 오늘은 좀 더 복잡한 재귀함수 코플릿에 도전해본다! Q1. 선물 상자에 대한 정보를 담은 배열과 문자열을 입력받아 조건에 맞는 선물이 있는지 여부를 리턴해야 합니다. const giftBox = ['macbook', 'mugcup', ['eyephone', 'postcard'], 'money']; let output = unpackGiftbox(giftBox, 'iphone'); console.log(output); // --> false output = unpackGiftbox(giftBox, 'postcard'); console.log(output); // --> true - 실패 function unpackGiftbox(giftBox, wish) { if (gi.. 더보기
[JS]재귀함수 예제 재귀함수란? 함수가 자신을 다시 호출하는 구조로 만들어진 함수이다. 재귀함수는 종료조건이 있어야 하며, 종료조건을 설정해주지 않으면 무한 반복을 하게된다. 재귀함수로 작성이 되는 코드는 반복문으로도 작성할 수 있다. 배열의 각 요소 추출(재귀함수 활용) head와 tail을 나누어 호출하면된다. 이때 tail은 slice를 통해 head 나머지 부분을 의미하도록 하고, 이를 재귀호출을 통해 head 값을 계속 끌어낸다. 확실히 반복문보다 코드가 깔끔하게 짜지긴하나, 생각하는데 좀 어렵긴하다. Q1. 수(num)를 입력받아 1부터 num까지의 합을 리턴해야 합니다. function sumTo(num) { if (num === 0) {return 0} if(num 더보기
[JS]arr의 다양한 메소드 arr.map() 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. arr.reduce() 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. Q1. 수를 요소로 갖는 배열을 입력받아 각 요소를 2배 곱한 새로운 배열을 리턴해야 합니다. function getDoubledElements(arr) { if (arr === []){return []} return arr.map(x => x*2) } Q2. 문자열을 요소로 갖는 배열을 입력받아 각 요소의 길이를 요소로 갖는 새로운 배열을 리턴해야 합니다. function getLengthOfElements(arr) { if (arr === []){return []} .. 더보기
[JS]Function관련 문법 Q1. 'Hello HoF!' 리턴하는 함수를 리턴해야 합니다. function returnFunction() { return function hello() {return 'Hello HoF!'} } Q2. 함수와 수(num)를 입력받아 num에 함수를 적용(apply)한 결과를 리턴해야 합니다. function functionParameter(func, num) { return func(num) } Q3. 두 개의 함수와 수(num)를 입력받아 num에 함수들을 num에 가까운 순서대로 적용한 결과를 리턴해야 합니다. function compose(func1, func2, num) { return func1(func2(num)) } Q4. 두 개의 함수를 입력받아 두 함수가 결합된 새로운 함수를 리턴해.. 더보기
[JS]객체, 배열 연습문제 Q1. 객체, 키, 수를 입력받아 주어진 키에 해당하는 값이 배열인 경우, 수가 가리키는 인덱스에 해당하는 요소를 리턴해야 합니다. function getElementOfArrayProperty(obj, key, index) { let arrProperty = obj[key]; if (Array.isArray(obj[key])){ return arrProperty[index] } } 우선 객체에 주어진 키에 해당하는 값이 배열인지 판단한다. 배열이라면, index에 해당하는 요소를 리턴한다. Q2. 배열과 객체를 입력받아 배열의 각 요소들을 객체의 키로 했을 때 그 값을 추출하여 만든 새로운 객체를 리턴해야 합니다. function select(arr, obj) { let newObj = {}; for .. 더보기