[ 2024.07.08 ] TIL

yy·2024년 7월 8일

개발일지

목록 보기
80/122

1. replace 콜백함수

mdn - replace()

replace(pattern, replacement)

// pattern : 문자열이거나 Symbol.replace 메서드가 있는 객체 (예시) 정규표현식
// replacement : 문자열이나 함수

replacement 자리에 콜백함수가 들어갈 수 있다.
이걸 왜 찾아보게됐냐면 알고리즘 문제때문이다.

문자열로 'onetwothree'로 되어있는걸 123으로 바꿔야하는 문제에서 나는 switch문으로해서 풀었는데 다른 사람들의 풀이를 보니 replace + 정규표현식 + 콜백함수를 이용했다.

// others
function solution(numbers) {
  const obj = {
    zero: 0, one: 1, two: 2, three: 3, four: 4,
    five: 5, six: 6, seven: 7, eight: 8, nine: 9
  };

  const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
    return obj[v];
  });

  return Number(num);
}




2. WHERE - EXISTS

WHERE EXISTS (서브쿼리)
# (예시) SELECT * 
        FROM TABLE1 
       WHERE EXISTS (
		       SELECT id
               FROM TABLE2
						)
# TABLE2에 있는 id에 해당하는게 TABLE1에 있는 데이터를 조회하는 방법.  			

조인은 아니고, 조건절에 있는 서브쿼리에 만족하는 데이터를 조회하는 방법인데...
조인으로도 바꿔 사용할 수 있긴 하겠다.

JOIN과 WHERE EXISTS의 차이점은
1. JOIN : 테이블간의 결합이므로 중복이 생길 수 있음 - 중복방지를 위해서 DISTINCT 키워드를 사용해야함.

  1. WHERE EXISTS: 중복이 생기지 않음. 조건에 대한 것에 대한 내용을 찾는 것이므로 JOIN보다는 비용이 덜 소요됨.
profile
시간이 걸릴 뿐 내가 못할 건 없다.

0개의 댓글