본문 바로가기
Developer/Coding Test

[JavaScript] 코딩테스트 준비하기

by 해적거북 2022. 1. 27.
728x90

MDN

 


0. 목차

  1. 문자열
    1. split - 구분자를 이용하여 문자열을 여러 문자열로된 배열로 만들기
    2. repeat - 문자열 반복
    3. slice - 문자열 일부 추출 
    4. substring - 문자열 일부 추출
    5. charAt - string[index]
    6. concat - 문자열 연결하기
    7. includes - 문자열에 다른 문자열이 포함 여부
    8. indexOf - 문자열에 다른 문자열 찾기
    9. padEnd - 문자열 형식 채우기
    10. replace - 일치하는 첫번째 부분만 변환
    11. replaceAll - 일치하는 모든 부분이 변환
    12. toLowerCase - 소문자로 변환
    13. toUpperCase - 대문자로 변환
    14. trim - 양끝 공백 제거
  2. 배열
    1. splice - 배열 원소 제거
    2. slice - 부분 배열 복사본
    3. fill - 배열 채우기
    4. map - 배열의 모든 요소 가공하여 새로운 배열 반환
    5. filter - 배열의 콜백함수를 통과한 요소로 구성된 새로운 배열 반환
    6. find - 판별함수를 만족하는 첫번째 요소 반환
    7. findIndex - 판별함수를 만족하는 첫번째 요소 index 반환
    8. join - 배열을 구분문자와 함께 문자열로 만들기
    9. indexOf - 찾고자하는 요소의 첫 요소 index 반환
    10. push - 배열 뒤에 추가
    11. pop - 배열 뒤에 제거
    12. unshift - 배열 앞에 추가
    13. shift - 배열 앞에 제거
    14. sort - 배열 정렬 (비교함수가 음수면 swap)

 

 

 

 

1. 반복문

// 기본 반복문
for(let i = 0; i < N; i++)


// forEach()
// break문, continue문 사용 불가능
array.forEach(element => { ... });
array.forEach((value, index, arr) => { ... });


// for...of 명령문은 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서 반복하고
// 각 개별 속성값에 대해 실행되는 문이 있는 사용자 정의 반복 후크를 호출하는 루프를 생성합니다.
// for문보다 효율성 좋음(프로그래머스 문제에서 for문 걸리는 경우 for of문 사용해보기)
for (const element of array1) {
  console.log(element);
}
for (const element of string) {
  console.log(element);
}


// for...in문은 상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복합니다.
// (Symbol로 키가 지정된 속성은 무시합니다.)
for(const property in object){
  console.log(`${property}: ${object[property]}`);
}

 

 

 

 

2. 문자열

 

string.split([separator[, limit]])

반환값

  • 주어진 문자열을 separator마다 끊은 부분 문자열을 담은 Array

설명

  • separator (Optional)
    • 원본 문자열을 끊어야 할 부분을 나타내는 문자열
    • 실제 문자열이나 정규표현식을 받을 수 있습니다.
    • 두 글자 이상일 경우 그 부분 문자열 전체가 일치해야 끊어집니다.
    • separator가 생략되거나 str에 등장하지 않을 경우, 반환되는 배열은 원본 문자열을 유일한 원소로 가집니다.
    • separator가 빈 문자열일 경우 str의 각각의 문자가 배열의 원소 하나씩으로 변환됩니다.
  • limit (Optional)
    • 끊어진 문자열의 최대 개수를 나타내는 정수
    • separator가 등장할 때마다 문자열을 끊지만 배열의 원소가 limit개가 되면 멈춥니다.
    • 지정된 한계에 도달하기 전에 문자열의 끝까지 탐색했을 경우 limit개 미만의 원소가 있을 수도 있습니다.
    • 남은 문자열은 새로운 배열에 포함되지 않습니다.

 

 

str.repeat(count);

반환값

  • 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열

설명

  • count
    • 문자열을 반복할 횟수. 0과 양의 무한대 사이의 정수([0, +∞))

 

 

str.slice(beginIndex[, endIndex])

반환값

  • 문자열의 일부를 추출하면서 새로운 문자열을 반환

설명

  • 원본 문자열은 변경되지 않습니다.
  •  beginIndex
    • 추출 시작점인 0부터 시작하는 인덱스입니다.
    • 만약 음수라면, beginIndex는  strLength(문자열 길이) + beginIndex로 취급됩니다.
    • 예를 들어 beginIndex가 -3이면 시작점은 strLength - 3
    • 만약 beginIndex가 strLength 보다 크거나 같은 경우, slice()는 빈 문자열을 반환합니다.
  • endIndex (Optional)
    • 0부터 시작하는 추출 종료점 인덱스로 그 직전까지 추출됩니다.
    • 인덱스 위치의 문자는 추출에 포함되지 않습니다.
    • 만약 endIndex가 생략된다면, silce()는 문자열 마지막까지 추출합니다.
    • 만약 음수라면, endIndex는 strLength(문자열 길이) + endIndex 로 취급됩니다.
    • 예를 들어 endIndex가 -3이면 종료점은 strLength - 3

 

 

str.substring(indexStart[, indexEnd])

반환값

  • string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환
  • 만약 indexEnd 가 생략된 경우, substring() 문자열의 끝까지 모든 문자를 추출합니다.
  • 만약 indexStart 가 indexEnd와 같을 경우, substring() 빈 문자열을 반환합니다.
  • 만약 indexStart 가 indexEnd보다 큰 경우, substring() 메서드는 마치 두 개의 인자를 바꾼 듯 작동하게 됩니다.
  • 0보다 작은 인자 값을 가지는 경우에는 0으로, stringName.length 보다 큰 인자 값을 가지는 경우, stringName.length 로 처리됩니다.

설명

  • str.substr 과 동일한 작업을 하지만 ECMA-262 표준에서는 str.substr를 제거 예정으로 명시함
  •  indexStart
    • 반환문자열의 시작 인덱스
  • indexEnd (Optional)
    • 반환문자열의 마지막 인덱스 (포함하지 않음)

 

 

str.charAt(index)

반환값

  • 지정된 인덱스에 해당하는 유니코드 단일문자를 반환
  • 만약 인덱스가 문자열 길이보다 큰 경우 빈 문자열 (예) " " 을 반환

설명

  • str[index]와 차이점 (index가 범위를 벗어난 경우)
    • str[index]에서는 undefined 반환
    • charAt(index)에서는 빈 문자열('') 반환
  •  index
    • 0과 문자열의 길이 - 1 사이의 정수값
    • 인자를 생략하면 기본값으로 0를 설정되고 첫 문자를 반환

 

 

str.concat(string2, string3[, ..., stringN])

반환값

  • 매개변수로 전달된 모든 문자열을 호출 문자열에 붙인 새로운 문자열을 반환
  • 원본 문자열은 변경되지 않습니다.

설명

  • string2, ...
    • 뒤에 이어 연결할 문자열

 

 

str.includes(searchString[, position])

반환값

  • 하나의 문자열이 다른 문자열에 포함되어 있는지를 판별하고, 결과를 true 또는 false 로 반환

설명

  • searchString
    • 문자열에서 찾을 다른 문자열.
  • position (Optional)
    • searchString을 찾기 시작할 위치
    • 기본값 0

 

 

str.indexOf(searchValue[, fromIndex])

반환값

  • 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환
  • 일치하는 값이 없으면 -1을 반환

설명

  • searchValue
    • 찾으려는 문자열
    • 아무값도 주어지지 않으면 문자열로 된 'undefined'를 찾으려는 문자열로 사용
  • fromIndex (Optional)
    • 문자열에서 찾기 시작하는 위치를 나타내는 인덱스 값
    • 기본값 0

 

 

str.padEnd(targetLength [, padString])

반환값

  • 현재 문자열에 다른 문자열을 채워, 주어진 길이를 만족하는 새로운 문자열을 반환
  • 채워넣기는 대상 문자열의 끝(우측)부터 적용

설명

  •  targetLength
    • 목표 문자열 길이. 현재 문자열의 길이보다 작다면 채워넣지 않고 그대로 반환
  • padString (Optional)
    • 현재 문자열에 채워넣을 다른 문자열. 문자열이 너무 길어 목표 문자열 길이를 초과한다면 좌측 일부를 잘라서 넣음
    • 기본값 " "

 

 

var newStr = str.replace(regexp|substr, newSubstr|function)

반환값

  • 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환
  • 패턴은 문자열이나 정규식(RegExp)이 될 수 있으며, 교체 문자열은 문자열이나 모든 매치에 대해서 호출된 함수

설명

  • pattern이 문자열 인 경우, 첫 번째 문자열만 치환
  • 원본 문자열은 변경되지 않습니다.
  • regexp (pattern)
    • 정규식(RegExp) 객체 또는 리터럴
    • 일치하는 항목은 newSubStr 또는 지정된 함수(function)가 반환 한 값으로 대체
  • substr (pattern)
    • newSubStr로 대체 될 String. 정규식이 아닌 글자 그대로의 문자열로 처리됩니다.
    • 오직 첫 번째 일치되는 문자열만이 교체됩니다.
  • newSubStr (replacement)
    • 첫번째 파라미터를 대신할 문자열(String). 여러가지 대체 패턴들이 지원

 

 

var newStr = str.replaceAll(regexp|substr, newSubstr|function)

반환값

  • 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환
  • 패턴은 문자열이나 정규식(RegExp)이 될 수 있으며, 교체 문자열은 문자열이나 모든 매치에 대해서 호출된 함수

설명

  • replace와 동일한 인자를 갖는다.
  • replace는 첫 번째 문자열만 치환하고, replaceAll은 모든 문자열을 치환한다.

 

 

str.toLowerCase()

반환값

  • 호출 문자열을 소문자로 변환한 새로운 문자열

설명

  • 원본 문자열은 변경되지 않습니다.

 

 

str.toUpperCase()

반환값

  • 호출 문자열을 대문자로 변환한 새로운 문자열

설명

  • 원본 문자열은 변경되지 않습니다.

 

 

str.trim()

반환값

  • str 문자열의 양끝의 공백을 제거한 새로운 문자열을 반환
  • str 문자열에 공백이 없어도 예외가 발생하지 않고 새 문자열이 반환

설명

  • 원본 문자열은 변경되지 않습니다.

 

 

 

 

3. 배열

 

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

반환값

  • 제거한 요소를 담은 배열. 하나의 요소만 제거한 경우 길이가 1인 배열을 반환합니다.
  • 아무 값도 제거하지 않았으면 빈 배열을 반환합니다.

설명

  • 원본 배열은 변경됩니다.
  •  start
    • 배열의 변경을 시작할 인덱스
    • 배열의 길이보다 큰 값이라면 실제 시작 인덱스는 배열의 길이로 설정
    • 음수인 경우 배열의 끝에서부터 요소를 세어나갑니다(원점 -1, 즉 -n이면 요소 끝의 n번째 요소를 가리키며 array.length - n번째 인덱스와 같음)
    • 값의 절대값이 배열의 길이 보다 큰 경우 0으로 설정
  • deleteCount (Optional)
    • 배열에서 제거할 요소의 수
    • deleteCount를 생략하거나 값이 array.length - start보다 크면 start부터의 모든 요소를 제거
    • deleteCount가 0 이하라면 어떤 요소도 제거하지 않습니다. 이 때는 최소한 하나의 새로운 요소를 지정해야 합니다.
  • item1, item2, ... (Optional)
    • 배열에 추가할 요소
    • 아무 요소도 지정하지 않으면 splice()는 요소를 제거하기만 합니다.

 

 

arr.slice([begin[, end]])

반환값

  • 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환

설명

  • 원본 배열은 변경되지 않습니다.
  • begin (Optional) 
    • 0을 시작으로 하는 추출 시작점에 대한 인덱스
    • 음수 인덱스는 배열의 끝에서부터의 길이를 나타냅니다.
    • slice(-2) 는 배열에서 마지막 두 개의 엘리먼트를 추출합니다.
    • begin이 undefined인 경우에는, 0번 인덱스부터 slice 합니다.
    • begin이 배열의 길이보다 큰 경우에는, 빈 배열을 반환합니다.
  • end (Optional)
    • 추출을 종료 할 0 기준 인덱스
    • slice 는 end 인덱스를 제외하고 추출합니다.
    • 예를 들어, slice(1,4)는 두번째 요소부터 네번째 요소까지 (1, 2 및 3을 인덱스로 하는 요소) 추출합니다.
    • 음수 인덱스는 배열의 끝에서부터의 길이를 나타냅니다.
    • 예를들어 slice(2,-1) 는 세번째부터 끝에서 두번째 요소까지 추출합니다.
    • end가 생략되면 slice()는 배열의 끝까지(arr.length) 추출합니다.
    • 만약 end 값이 배열의 길이보다 크다면, silce()는 배열의 끝까지(arr.length) 추출합니다.

 

 

arr.fill(value[, start[, end]])

반환값

  • 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채운 배열

설명

  • value
    • 배열을 채울 값
  • start (Optional)
    • 시작 인덱스
    • 기본값은 0
  • end (Optional)
    • 끝 인덱스
    • 기본값은 this.length

 

 

arr.map(callback(currentValue[, index[, array]])[, thisArg])

반환값

  • 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환

설명

  • 원본 배열은 변경되지 않습니다.
  • callback
    • 새로운 배열 요소를 생성하는 함수
    • currentValue, index, array를 인수로 가집니다.
  •  currentValue
    • 처리할 현재 요소
  • index (Optional)
    • 처리할 현재 요소의 인덱스
  • array (Optional)
    • map( )을 호출한 배열

 

 

arr.filter(callback(element[, index[, array]])[, thisArg])

반환값

  • 테스트를 통과한 요소로 이루어진 새로운 배열
  • 어떤 요소도 테스트를 통과하지 못했으면 빈 배열을 반환

설명

  • 원본 배열은 변경되지 않습니다.
  • callback
    • 각 요소를 시험할 함수. true를 반환하면 요소를 유지하고, false를 반환하면 버립니다.
    • element, index, array를 매개변수로 받습니다.
  •  element
    • 처리할 현재 요소
  • index (Optional)
    • 처리할 현재 요소의 인덱스
  • array (Optional)
    • filter를 호출한 배열

 

 

arr.find(callback[, thisArg])

반환값

  • 주어진 판별 함수를 만족하는 첫 번째 요소의 을 반환합니다.
  • 그런 요소가 없다면 undefined를 반환합니다.

설명

  • callback
    • 배열의 각 값에 대해 실행할 함수
    • element, index, array를 인자로 받습니다.
  • element
    • 콜백함수에서 처리할 현재 요소
  • index (Optional)
    • 콜백함수에서 처리할 현재 요소의 인덱스
  • array (Optional)
    • find 함수를 호출한 배열

 

 

arr.findIndex(callback(element[, index[, array]])[, thisArg])

반환값

  • 주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환합니다.
  • 만족하는 요소가 없으면 -1을 반환합니다.

설명

  • callback
    • 3개의 인수를 취하여 배열의 각 값에 대해 실행할 함수입니다.
    • element, index, array를 인수로 받습니다.
  • element
    • 배열에서 처리중인 현재 요소
  • index
    • 배열에서 처리중인 현재 요소의 인덱스
  • array
    • findIndex 함수가 호출된 배열

 

 

arr.join([separator])

반환값

  • 배열의 모든 요소들을 연결한 하나의 문자열을 반환
  • arr.length 가 0이라면, 빈 문자열을 반환

설명

  • separator (Optional)
    • 배열의 각 요소를 구분할 문자열을 지정합니다.
    • 생략하면 배열의 요소들이 쉼표로 구분됩니다.
    • separator가 빈 문자열이면 모든 요소들이 사이에 아무 문자도 없이 연결됩니다.

 

 

arr.indexOf(searchElement[, fromIndex])

반환값

  • 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환
  • 존재하지 않으면 -1을 반환

설명

  • searchElement
    • 배열에서 찾을 요소
  • fromIndex (Optional)
    • 검색을 시작할 색인
    • 인덱스가 배열의 길이보다 크거나 같은 경우 -1이 반환
    • 산 된 인덱스가 0보다 작 으면 전체 배열이 검색됩니다.
    • 기본값 0

 

 

arr.push(element1[, ...[, elementN]])

반환값

  • 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환

설명

  • elementN
    • 배열의 끝에 추가할 요소

 

 

arr.pop()

반환값

  • 배열에서 마지막 요소를 제거하고 그 요소를 반환

설명

  • 빈 배열의 경우 undefined 를 반환

 

 

arr.unshift([...elementN])

반환값

  • 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환

설명

  • elementN
    • 배열 맨 앞에 추가할 요소

 

 

arr.shift()

반환값

  • 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환

설명

  • 빈 배열의 경우 undefined 를 반환

 

 

arr.sort([compareFunction])

반환값

  • 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환

설명

  • 원본 배열은 변경됩니다.
  • compareFunction (Optional)
    • 정렬 순서를 정의하는 함수
    • 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬
    • compareFunction(a, b)이 0보다 작은 경우 a를 b보다 낮은 색인으로 정렬합니다. 즉, a가 먼저옵니다.
    • compareFunction(a, b)이 0을 반환하면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬합니다.
    • compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다.
    • 0, 양수면 그대로 / 음수면 swap

 

 

 

 

4. 객체

 

 

 

 

 

 

 

5. 기타

값이 없거나 0-0, nullfalse, NaN, undefined, 빈 문자열 ("")이라면 객체의 초기값은 false입니다.

 

 

Number.MIN_SAFE_INTEGER
// JavaScript에서 안전한 최소 정수값

Number.MAX_SAFE_INTEGER
// JavaScript에서 안전한 최대 정수값

Number.NaN
// Not-A-Number(숫자가 아님)를 나타내고 NaN과 같습니다

Number.isInteger(value)
// 매개변수의 값이 정수면 true를, 아니면 false를 반환
// NaN이거나 Infinity여도 false를 반환

Number.isNaN(value)
// 주어진 값의 유형이 Number이고 값이 NaN이면 true, 아니면 false

Number.parseInt(string[, radix])
// 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환
// string이 radix진수로 되어있으니 10진수로 변환하여 반환
// parInt()와 동일한 기능을 하지만 
// string : 문자열이 아닐 경우 ToString 추상 연산을 사용해 문자열로 변환하고 선행 공백은 무시
// radix (Optional) : string의 진수를 나타내는 2부터 36까지의 정수

numObj.toFixed([digits])
// 숫자를 고정 소수점 표기법으로 표기해 반환
// digits (Optional) : 소수점 뒤에 나타날 자릿수. 0 이상 20 이하의 값을 사용, 생략하면 0

numObj.toString([radix])
// 특정한 Number 객체를 나타내는 문자열을 반환
// radix (Optional) : 수의 값을 나타내기 위해 사용되기 위한 기준을 정하는 2와 36사이의 정수

 

 

Math.abs(x)
// 주어진 숫자의 절댓값 반환

Math.ceil(x)
// 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer로 반환

Math.floor(x)
// 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환

Math.max([value1[, value2[, ...]]])
// 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환

Math.min([value1[, value2[, ...]]])
// 입력값으로 받은 0개 이상의 숫자 중 가장 작은 숫자를 반환

Math.pow(base, exponent)
// base^exponent처럼 base 에 exponent를 제곱한 값을 반환

Math.random()
// 0 이상 1 미만의 부동소숫점 의사 난수 반환

Math.round(x)
// 입력값을 반올림한 수와 가장 가까운 정수 값을 반환

Math.sign(x)
// 주어진 수의 부호를 나타내는 +/-1을 반환
// 주어진 수가 (양/음)의 0인 경우 (0/-0) 반환
// 이외의 경우 NaN 반환

Math.sqrt(x)
// 숫자의 제곱근 반환
// 숫자가 음수인 경우 NaN 반환

 

 

 

6. 꿀팁

  • 최댓값 + 최댓값 index + 최댓값 제거하기
arr.splice(arr.indexOf(Math.max(...arr)),1);

 

  • 찾고자하는 원소의 모든 index 추출하기
let str = 'abccbaabccba';

let index = str.indexOf('a');

while(index != -1) {
  console.log(index);
  index = str.indexOf('a', index + 1);
}

 

  • 배열의 중복 원소 제거
let nums = [1, 3, 5, 5, 3, 1];

let s = [...new Set(nums)];

 

  • 진수 변환
// 10진수 → n진수
let num10 = 123;

const binary = num.toString(2);  // 10진수 → 2진수
const octal = num.toString(8);  // 10진수 → 8진수
const hex = num.toString(16);  // 10진수 → 16진수

// n진수 → 10진수
let binary = '111';
const num = parseInt(binary, 2);  // 2진수 → 10진수

let octal = "777";
const decimal = parseInt(octal, 8);	// 8진수 → 10진수

let hex = "fff";
const decimal = parseInt(hex, 16);	// 16진수 → 10진수

 

 


 

728x90

댓글