메가바이트 스쿨 3주차 (12/29) Clone coding, javaScript

정영찬·2022년 12월 29일
0
post-thumbnail

TIL

코딩 테스트 9일차 문제

조사한 자료

정규식

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기위한 패턴
객체로서 exec() test() 메서드 사용 가능 Stringmatch(), matchAll(), replace(), replaceAll(), search(), split() 메서드와 함께 사용 가능하다.

패턴 작성 방법

  • 단순 패턴 사용하기 - 문자열을 있는 그대로 탐색할 때 사용한다. ex) /abc/ -> 정확한 순서로 abc가 있는 조합을 찾는다.

  • 특수 문자 사용하기

    • 어서션 : 줄이나 단어의 시작과 끝을 나타내는 경계와, 일치가 가능한 방법을 나타내는 패턴(전방탐색, 후방탐색, 조건 표현식)
    const text = 'A quick fox';
    
    const regexpLastWord = /\w+$/;
    console.log(text.match(regexpLastWord));
    // expected output: Array ["fox"]

    -문자 클래스 (en-US) : 글자와 숫자처럼 다른 유형의 문자를 구분한다.

    const chessStory = 'He played the King in a8 and she moved her Queen in c2.';
    const regexpCoordinates = /\w\d/g;
    console.log(chessStory.match(regexpCoordinates));
    // expected output: Array [ 'a8', 'c2']
    
    • 그룹과 범위 : 표현 문자의 그룹과 범위를 나타낸다.

    • 수량자 : 일치할 문자나 표현이 반복되어야할 횟수를 나타낸다.

    const ghostSpeak = 'booh boooooooh';
    const regexpSpooky = /bo{3,}h/;
    console.log(ghostSpeak.match(regexpSpooky));
    // expected output: Array ["boooooooh"]
    • 유니코드 속성 이스케이프 : 대/소문자, 수학기호, 문장부호처럼, 유니코드 문자 속성에 따라 문자를 구분한다.
    const sentence = 'A ticket to 大阪 costs ¥2000 👌.';
    
    const regexpEmojiPresentation = /\p{Emoji_Presentation}/gu;
    console.log(sentence.match(regexpEmojiPresentation));
    // expected output: Array ["👌"]

정규식 메타문자 : 표현식에서 사용되는 기호를 Meta문자라고 표현한다.

플래그 문자 : 정규표현식을 사용할 때 Flag 라는 것이 존재하는데 Flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료하게 된다.

출처: https://hamait.tistory.com/342

reduce() 배열의 내장 객체

arr.reduce(callback(accumulator, currentValue [, currentIndex[, array]]) [, initialValue])

배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);

배열(arr)의 각 element들에 대해서 파라미터로 입력받은 callback 함수를 실행하여, 하나의 리턴값을 반환하는 함수로 callback 함수는 배열(arr)의 모든 element를 대상으로 한번씩 호출된다.
다음 element에 대한 callback함수 실행시 파라미터로 입력되어 활용되며, 배열의 모든 element들에 대해 callback함수 실행이 완료되면 마지막 element의 callback 함수의 리턴값을 리턴한다.

이 메서드를 사용해서 배열의 합계를 구할수 있다.

const arr = [1, 2, 3];

const result = arr.reduce(function add(sum, currValue) {
  return sum + currValue;
}, 0);

document.writeln(result); // 6

reduce메서드 내용을 더 간략하게 줄일수 있다.

const result = arr.reduce((acc,cur,i) => {
  return acc+cur;
}, 0);

출처 : https://hianna.tistory.com/408

Number()

문자열을 숫자로 변환하는 함수.
프로그래머스 코딩테스트에서 문자와 숫자가 결합된 데이터에서 숫자만 추려내어 총 합계를 구하는 문제가 있었는데, 배열의 항목들을 문자에서 숫자로 바꾸는 방법을 검색하던 중에 찾게 되었다.

Number( object )

  • object: 문자열 또는 문자열을 값으로 하는 변수를 입력한다.

set()

배열에서 중복을 제거하는 방법중 하나이다.

new Set(arr)

위의 식을 입력하면 arr에 있는 데이터가 추가된 Set 객체가 생성되며, 중복은 허용되지 않기 때문에 하나씩만 요소가 추가된다. 객체에서 배열로 바꾸고 싶으면 스프레드 연산자를 쓰면 된다.

const arr = ['A', 'B', 'C', 'A', 'B'];

const set = new Set(arr);
const newArr = [...set];
console.log(newArr) // [ 'A', 'B', 'C' ]

javaScript 자료형

  • 심볼

변경 불가 데이터
유일한 식별자를 만들어 데이터를 보호하는 용도로 사용할수 있다.
심볼에 추가하는 설명은 단순 디버깅을 위한 용도일 뿐, 심볼 값과는 관계가 없다.


// Symbol('설명')
const sKey = Symbol('Hello!')
const user = {
  key: '흔한 정보!',
  [sKey]: '위험한 정보!'
}

console.log(user.key) // '흔한 정보!'
console.log(user['key']) // '흔한 정보!'
console.log(user[sKey]) // '위험한 정보!'
console.log(user[Symbol('Hello!')]) // undefined
  • BigInt

길이 제한이 없는 정수
숫자 데이터가 안정적으로 표시할수 있는 최대치 보다 큰 정수를 표현할때 사용한다.

※ 형변환

const a = 11n // BigInt
const b = 22 // 숫자

// 숫자 => Bigint
console.log(a + BigInt(b)) // 33n

// Bigint => 숫자
console.log(Number(a) + b) // 33

참조형

  • 배열

배열(array)은 같은 타입의 변수들로 이루어진 유한 집합

const fruits = ['apple','banana','watermelon']

// 리터럴 
fruits = ['apple', 'Banana', 'cherry]
          
 // 배열의 아이뎀 인덱싱
 console.log(fruits[0]) // 'apple'
 
 // 배열의 길이
 console.log(fruits.length) // 3

// 첫번째 아이템 인덱싱
console.log(fruits[0]) // 'apple'

// 마지막 아이템 인덱싱

console.log(fruits[fruits.length -1]) //'cherry'
console.log(fruits.at(-1)) //'cherry'
  • 객체

Key:Value(속성:값) 형태로 더 복잡한 데이터 구조를 표시할때 사용한다.

const user = {
  name: 'jyc',
  age: '27',
  email: 'jyc4648@gmail.com',
}

// 다른 방법
function User() {
  this.name = 'jyc'
  this.age = '27
}
user = new User()


console.log(user) // {name: 'jyc', age: '27', email: 'jyc4648@gmail.com'}

※ 점 표기법과 대괄호 표기법
객체의 멤버를 2가지 방법을 통해 접근할수 있다.

const user = {
  name: 'jyc',
  age: '27',
  email: 'jyc4648@gmail.com',
}

// 점 표기법
console.log(user.name) // 'jyc'
console.log(user.age) // '27'

// 대괄표 표기법

console.log(user['name']) // 'jyc'
console.log(user['age'] // '27'

※ 속성 지우기

const user = {
  name: 'jyc',
  age: '27'
}

delete user.age

console.log(user) // {name: 'jyc'}

속성의 이름은 고유하므로 중복된 속성이 존재한다면, 마지막에 작성된 속성으로 값이 할당된다.

const user = {
	name: 'jyc'
    age: 85, // X
    age : 27
}

점 표기법과 대괄호 표기법은 체이닝으로 작성이 가능함

const userA = {
  name: 'jyc',
  age: 28,
  email: 'jyc4648@gmail.com',
}

const userB = {
  name: 'jys',
  age: 32,
  brother: userA,
}

console.log(userB.brother.name) // 'jyc'

console.log(userB['brother']['name']) // 'jyc'
  • 함수

자바스크립트에서 함수는 1급 개체로, 하나의 값으로 변수나 인수 혹은 반환이 가능하다

function hi() {
  return 'how are you?'
}

console.log(hi()) // 'how are you?'

형변환

동등 연산자(==)는 두 피연산자의 값이 서로 같으면 참(true)을 반환하다. 이때 두 피연산자의 타입이 서로 다르다면 비교를 위해 강제로 형태의 변환이 일어난다.

반대로 일치 연산자(===)는 타입의 변환없이 두 피연산자의 타입까지 같은가의 여부를 따지게 된다.

const a = 1
const c = '1'

console.log(a === c) // false 
console.log(a == c) // true
profile
개발자 꿈나무

0개의 댓글