All Articles

[20190702 TIL]


오늘의 TIL


정규표현식

정규표현식은 워낙 광범위하므로, 자신이 나타내고자 하는 표현식을 작성하면 된다.

링크 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D

짧고 간단한 예로 내가 오늘 배운 표현식에 대해 해석해보고자 한다.

var phone_number = "01022229999";
var reg = /\d(?=\d{4})/g;

console.log(phone_number.replace(reg, "*"));

위의 예제의 정규표현식을 해석해보면, 정규표현식은 / … / 슬래시 사이에 표현됩니다. \d 는 숫자문자에 대응되고, (?=\d{4})는 괄호 안에서 4개의 양의 정수를 의미합니다. {} 대괄호 안에 들어오는 숫자는 반드시 양의 정수이어야 합니다. 마지막으로 g는 플래를 사용한 고급검색으로 g 플래그는 전역 검색을 뜻합니다.


String에서 Number로 변환

자바스크립트에서 String을 Number 타입으로 변환하는 방법과 Number를 String 타입으로 변환하는 방법은 다양합니다. 그 중에서 새로 알게된 몇가지를 추가해서 작성해보려고 합니다.

1. String to Number

var string = "33";

1) string*=1;

2) Number(string)

3) parseInt(string)

4) parseFloat(string) // 실수를 원하는 경우 사용

5) +string

한 눈에 보기 쉽게 하기 위해서 console.log()를 생략하여 작성했습니다. 위의 예제의 타입을 확인하고 싶은 경우에는 “console.log(typeof(string*=1));” 이런식으로 확인해볼 수 있습니다.

위의 예제 중에서 오늘 새롭게 알게 된 ‘5) +string’ 은 정말 짧고 간결하게 변환할 수 있는 방법이라고 생각합니다.


2. Number to String

var num = 33;

1) num += ""

2) num.toString()

3) String(num)

간결하게 코드를 작성하기 위해서 많은 사람들이 1)번 방법을 많이 사용하는 것 같습니다.


Array.map()

array의 map 메소드는 callback 함수로 배열의 각 원소들을 순서대로 불러, 원하는 작업을 한 후, 새로운 배열 결과를 반환하는 함수입니다.

기억하기 쉽도록 간단한 예제를 작성해봅시다.

var arr = [1, 4, 9, 16];

const map1 = arr.map(v => v * 2);

console.log(map1); // [2, 8, 18, 32]

틸트 연산자(~, 물결)

0과 1을 모두 뒤집는 Bitwise NOT 연산자이다. “~0101”는 “1010”이 된다.

그런데 이걸 인덱스 비교, 값 유무 등 오묘한 방식으로 사용하기도 하는 것 같다.

|| (OR 연산자) 또한 자바스크립트에서 일반적으로 사용하는 트릭인 것 같습니다.

예제를 한 번 보면,

var arr = [1,3,2,5,4];

function solution(d, budget){
 return ~(~d.sort((a,b)=>a-b).map(v => budget-=v).findIndex(v => v<0) || ~d.length);
}

console.log(solution(arr, 9));

위의 코드는 ‘프로그래머스 level1 예산’ 문제의 다른 사람 풀이입니다. 제가 해석한 바로는 “d.sort((a,b)=>a-b).map(v => budget-=v).findIndex(v => v<0)” 이 부분에 값이 있다면 OR연산자를 기준으로 앞부분의 값을, 그 부분에 값이 없다면 OR 연산자를 기준으로 뒷부분의 값으로 결과를 처리한다.