BEB 07 3-3

Donghun Seol·2022년 9월 28일
0

코드스테이츠 BEB 07

목록 보기
11/39

재귀

js array methods

slice, splice의 차이점에 대해서 정리하고 넘어간다.

slice : 원본은 변하지 않고, 잘려진 배열을 반환

  • array.slice(start, end)
  • array.slice()를 활용해서 얕은 복사 가능하다.

splice : 배열의 기존 요소를 삭제나 교체하거나 새 요소를 추가할때 사용된다.

  • splice는 원본 배열을 변화시키는 메서드다.
  • 첫째 인자는 시작인덱스, 둘째 인자는 카운트.
  • array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]

months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]

flatten array with reduce

function flattenArrReduce(arr) {
    return arr.reduce((acc, cur) => {
        if (!Array.isArray(cur)) {
            acc = [...acc, cur];
        } else {
            acc = [...acc, ...flattenArrReduce(cur)];
        }
        return acc;
    }, []);
}

문자열 처리

알고리즘 문제를 원할하게 풀려면 문자열을 능숙하게 다룰 수 있어야 한다.
programmers에서 js 문제를 몇개 풀어보니, 문자열 관련 함수의 레퍼런스를 찾느라 시간이 많이 쓰였다.
문자열 관련해서 꼭꼭 정리하고 넘어가보자.

모든 문자열은 Immutable

따라서 모든 string 메소드는 새로운 문자열을 생성해서 반환한다.

문자열에서 위치 찾기

특정 문자나 문자열이 처음으로 등장하는 위치, 마지막으로 등장하는 위치를 반환
찾을 수 없으면 -1을 반환한다.

  • str.indexOf(searchString)
  • str.lastIndexOf(searchString)

지정된 인덱스에 있는 문자 반환

  • str.charAt(index) : 문자 자체
  • str.charCodeAt(index) : 아스키 코드
  • str.codePointAt(index) : 유니코드

문자열에서 일부만 추출

  • str.slice(start, [end]), 음수 인덱스는 끝에서부터 적용
  • str.substring(start, [end])
  • str.substr(start, [count])

문자열 더하기

전부 다 적용가능.

  • str.concat(anotherStr)
  • str + anotherStr
  • str += anotherStr

정규식 관련 메서드

어디에 속한 메서드인지 잘 기억해야 오류없이 사용가능 하다.

  • test(), exec()은 Regex 객체의 메서드
  • match(), replace(), search(), split()은 String의 메서드
  • pattern.test(string) : string에 정규식과 일치하는 부분이 있는지 boolean 반환
  • pattern.exec(string) : 문자열에 일치하는 부분을 탐색, 일치정보 배열 또는 null 반환
  • string.match(pattern) : 매칭 정보를 포함한 배열 반환
  • string.matchAll(pattern with global flag) : 이터레이터 반환
  • string.replace(pattern, replacerString) : 매칭되는 부분을 변경한 스트링 반환, 패턴에 글로벌 플래그 적용시 replaceAll 처럼 작동함
  • string.search(pattern) : 처음 매칭되는 인덱스 반환

기타 직관적인 메서드

  • str.trim()
  • str.startsWith(string)
  • str.endsWith(string)
  • str.toUpperCase() 모든 문자를 대문자로
  • str.toLowerCase()

문자열 처리 예시

무슨 역할을 하는 코드인지 이해해 보자.

function solution(s) {
    return s.split(" ").map(v => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()).join(" ");
}

아래의 코드를 이해해 보자

String(null | undefined);

const myStr = '12345678';
myStr.slice(1, -1);
myStr.slice(-1);
myStr.slice(-1, -3);

myStr.substring(-3, -1); // 음수를 인자로 받으면 어떻게 되나??
profile
I'm going from failure to failure without losing enthusiasm

0개의 댓글