다음과 같은 경우를 객체가 비어있다고 표현하는데, 어떤 객체가 빈 객체인지 체크하는 방법 3가지를 알아보자. // 객체가 비어있는지 체크하기 let emptyObject = {}; 1. Object.keys() Object.keys() 메서드와 constructor 속성을 함께 사용한다. Object.keys() 메서드는 주어진 객체 속성의 key들을 문자열 배열 형태로 return한다. // Object.keys() 예제 const object1 = { a: 'somestring', b: 327, c: false, }; console.log(Object.keys(object1)); // Array ["a", "b", "c"] constructor가 필요한 이유는 Object.keys()가 객체가 아닌 ..
Map 객체 Map key - value 쌍으로 이루어져있고, 키의 원래 삽입 순서를 기억한다. 모든 값이 key 또는 value로 사용될 수 있다. Map에서 key는 오직 하나만 존재한다. const map1 = new Map(); map1.set('a', 1); map1.set('b', 2); map1.set('c', 3); console.log(map1.get('a')); // Expected output: 1 map1.set('a', 97); console.log(map1.get('a')); // Expected output: 97 console.log(map1.size); // Expected output: 3 map1.delete('b'); console.log(map1.size); // E..
String.toUpperCase() / String.toLowerCase() 문자열을 각각 대문자 / 소문자로 변환해 반환한다. String.split() split(separator, limit) 형식 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다. separator는 문자열이나 정규표현식을 받을 수 있다. (separator가 두 글자 이상일 경우 그 부분 문자열 전체가 일치해야 끊어진다.) limit는 끊어진 문자열의 최대 개수를 나타내는 정수이다. 이 매개변수를 전달하면 split() 메서드는 주어진 separator가 등장할 때마다 문자열을 끊지만 배열의 원소가 limit개가 되면 멈춘다. return 값은 주어진 문자열을 separator마다 끊은 부분 문자열을 담은..
다섯가지 방법 한눈에 보기! const array = ['C', 'A', 'B', 'A', 'C', 'D', 'C', 'C', 'E', 'D']; console.log(array);// ['C', 'A', 'B', 'A', 'C', 'D', 'C', 'C', 'E', 'D'] //Set()을 이용한 방법 let result1 = [...new Set(array)]; console.log(result1);// ['C', 'A', 'B', 'D', 'E'] //fillter()와 indexOf를 이용한 방법 let result2 = array.filter((v, i) => array.indexOf(v) === i); console.log(result2);// ['C', 'A', 'B', 'D', 'E'] /..
명시적 형변환 방법은 다른 문제에서 여러번 사용해 익숙했고, 직관적이라 어렵지 않았는데, 암시적 형변환을 사용한 코드를 보니 자세한 개념 숙지가 안되었던 것 같아 글을 쓴다. 서로 다른 자료형을 가지는 변수를 +연산자로 연결했을 때, JS엔진은 Boolean < Number < String 의 우선 순위에 기반해 암시적 형변환을 한다. // 우선순위에 의한 형변환 Number + Boolean // Number Number + String // String Boolean + String // String // 실제 String을 만나기 전까지는 일반적인 + 연산자로 동작한다. 7 + 7 + 7; // = 21 7 + 7 + "7"; // = 147 "7" + 7 + ..
프로그래머스에서 문제를 풀면 그 문제에 해당하는 다른 사람의 풀이를 볼 수 있는데, 내가 반복문과 조건문으로 비교적 복잡하게 푼 문제들을 나에겐 익숙하지 않은 정규 표현식을 사용해 간단하게 풀이한 코드가 많이 보였다. 그래서 정규 표현식에 대해 더 알아보고 정리하고자 글을 쓴다. 간단한 형식만큼 가독성이 떨어진다는 문제점이 있지만, 사용자의 전화번호 검색, 패스워드 등록과 같은 특수한 상황에 정규 표현식이 유용하게 사용된다. 글의 마지막 부분에 이해를 돕기 위한 활용 예시를 하나 첨부하겠다. 정규 표현식이란 패턴(pattern) 과 선택적으로 사용할 수 있는 플래그(flag) 로 구성되며, 문자 검색과 교체에 사용되는 패턴으로 강력한 기능을 제공한다. 외운다기 보다, 문서를 보고 응용할 수 있게 한다는 ..
Array.reverse() 배열의 순서를 반전 시킨다. const a = [1, 2, 3]; console.log(a); // [1, 2, 3] a.reverse(); console.log(a); // [3, 2, 1] 관련한 프로그래머스 코딩테스트 연습문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Array.indexOf indexOf(searchElement, fromIndex) 형식으로 사용하며 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고, 찾을 수 없는 경우 -1을 반환한다. searchElement : 찾고자 하는..
1. js에서 문자열은 값의 변경은 불가능하지만 유사 배열 객체이므로 인덱스를 통한 값 참조와 length 메서드 사용이 가능하다. (프로그래머스 코테 연습 ) 2. 비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꾼다. 3. console.log와 process.stdout.write 모두 출력할 때 사용하는 함수라는 공통점이 있다. 차이점은 console.log는 출력할 때마다 개행을 하고, process.stdout.write는 개행을 하지 않는다는 것이다.
비동기 프로그래밍에 대해 알아보기 앞서, 이해를 돕기 위해 반대되는 개념인 동기(synchronous) 프로그래밍에 대해 먼저 알아보자. 단어가 생소할 수는 있어도 아주 쉬운 개념이다. 아래 코드는 여태까지 우리가 작성한 일반적인 코드의 모습이다. const name = "Rin"; const greeting = `Hello, my name is ${name}!`; console.log(greeting); // "Hello, my name is Rin!" 이 코드에서는 1. name이라는 문자열을 선언하고, 2. name을 사용하여 greeting이라는 문자열을 선언하고, 3. 출력했다. 각 라인의 코드는 이전 라인의 결과에 의존하고 있고, 프로그램을 작성한 순서대로 한 줄씩 실행된다. 이것이 바로 동기..
자바스크립트에서 비동기:동시성 프로그래밍을 하는 방법은 크게 callback(나중에 호출할 함수)과 Promise 두가지이다.(비동기 프로그래밍과 콜백과 프로미스에 대한 개념을 정리해 놓은 글을 첨부하겠다.) [JavaScript] 비동기(asynchronous) 프로그래밍과 프로미스(Promise)비동기 프로그래밍에 대해 알아보기 앞서, 이해를 돕기 위해 반대되는 개념인 동기(synchronous) 프로그래밍에 대해 먼저 알아보자. 단어가 생소할 수는 있어도 아주 쉬운 개념이다. 아래 코드는 여r-ing.tistory.com 하지만 대부분의 최신 비동기 API에서는 콜백을 사용하지 않고 Promise를 사용한다. callback방식이 무엇인지 먼저 살펴보고 불편한점이 어떤점일지 생각해보자. 의도적으로 ..