프론트엔드 기본/JavaScript

자바스크립트 코딩테스트

startfront 2025. 2. 20. 17:06

자바스크립 코딩 테스트를 준비하며

자바스크립트에서 자주 사용하는 기본 문법 및 내용들을 정리해 보도록 하겠습니다.

 

1. 최대 최소값 구하기

 

2. Math 함수

  • 올림 (Math.ceil())

: 숫자를 올림 처리할 때는 주로 Math.ceil() 함수를 사용

 

-입력받은 숫자보다 크거나 같은 정수 중 가장 작은 정수를 리턴

Math.ceil(1.4);  // 2
Math.ceil(1.6);  // 2
Math.ceil(-1.4); // -1
Math.ceil(-1.6); // -1
Math.ceil(1);    // 1
Math.ceil();     // NaN

 

  • 내림(Math.floor())

: 숫자를 내림 처리할 때는 주로 Math.floor() 함수를 사용

Math.floor(45.9); //  45
Math.floor(45.1); //  45
Math.floor(-45.1); // -46
Math.floor(-45.9); // -46
Math.floor(1);    // 1
Math.floor();     // NaN

 

  • 반올림(Math.round())

: 숫자를 반올림 처리할 때는 주로 Math.round() 함수를 사용

Math.round(1.2); // 1
Math.round(3.5); // 4
Math.round(-3.5); // -4
Math.round(-3.1); // -4

 

  • 최댓값, 최솟값 (.max() & .min())

.max()는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자, 최댓값을 반환

 .min()은 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자, 최댓값을 반환

Math.max([value1[, value2[, ...]]])
Math.min([value1[, value2[, ...]]])

 

  • 절댓값 (.abs())

:.abs()는 주어진 숫자의 절대값을 반환

Math.abs(4); // 4
Math.abs(3.141592653589793); // 3.141592653589793
Math.abs(-3.141592653589793); // 3.141592653589793 양수로 반환
Math.abs("-1"); // 1
Math.abs(""); // 0

 

  • 제곱근(.sqrt())

: .sqrt()는 숫자의 제곱근을 반환

Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1);  // 1
Math.sqrt(0);  // 0
Math.sqrt(-1); // NaN

 

3. 최대/최소 Number 값 세팅

 

- 안전한 최대 ,최소 정수 값을 나타냄

const max = Number.MAX_SAFE_INTEGER;
const min = Number.MIN_SAFE_INTEGER;

 

- min 값을 최대 정수로 표현하여 최솟값을 찾을 수 있음

<script>
       function solution(arr){        
              let answer;
              min = Number.MAX_SAFE_INTEGER;
              //min =arr[0]
              for(let i =0 ; i < arr.length; i++) {
                if(arr[i]<min) min = arr[i];
              answer = min;
              return answer;
            }
        }

            let arr=[5, 7, 1, 3, 2, 9, 11];
            console.log(solution(arr));
  
    </script>

 

- Math 메소드를 통하여 더 손쉽게 배열의 최솟값을 확인 가능

 

- call() , apply() 

-  함수 호출 방식과 상관없이 this를 지정할 수 있습니다.

- 대부분의 경우 this의 값은 함수를 호출한 방법에 의해 결정됩니다.
  실행 중에는 할당으로 설정할 수 없고 함수를 호출할 때마다 다를 수 있습니다.
  함수를 어떻게 호출했는지 상관하지 않고 this값을 설정할 수 있는 메서드입니다.

call(this로 사용될 값, 호출할 함수의 매개변수들 ... )
apply(this로 사용될 값, 호출할 함수의 매개변수들을 배열로 받는다. )  

 

- Math.min 메소드는 배열을 인자를 받을 수 없음

// ...arr 이나 .apply(null,arr)을 통하여 배열을 가져옴

<script>
       function solution(arr){        
              // let answer = Math.min(...arr);
              let answer = Math.min.apply(null,arr);
              return answer;
        }

            let arr=[5, 7, 1, 3, 2, 9, 11];
            console.log(solution(arr));
  
    </script>

 

4. 배열 갖고 오기

- for문

for (let i = 0; i < array.length; i++) {
        console.log(array[i]); 
    }

 

- for.. of 반복문

배열에 많이 사용, 배열의 요소 개수만큼 반복하고, 반복 때마다 각 요소들을 사용할 수 있는 변수가 주어지는  반복문

forEach 처럼 index를 가져오지는 못함

for (변수 of 배열) {
    반복동작부분
}

 

5. 배열 추가, 삭제 함수

- 자바스크립트는 배열의 길이를 동적으로 변경

배열 추가 : Array.push(), Array.unshift(), Array.splice()
배열 삭제 : Array.pop(), Array.shift(), Array.splice()
  • push

push 메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환한다.

원본 배열을 바꾼다.

var arr = ['a', 'b', 'c'];
arr.push('d');

// arr = ['a', 'b', 'c', 'd']
  • pop

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

let arr = ["1","2","3","4"];
let returnValue = arr.pop();
console.log(arr);
["1","2","3"]
console.log(returnValue)
4

 

  • unshift

: 배열의 앞쪽에 요소를 추가

var arr = ['a', 'b', 'c'];
arr.unshift('d'); // 배열의 앞쪽에 요소를 추가
// arr = ['d', 'a', 'b', 'c']

 

  • shift

: 배열의 첫번째 요소를 제거

var arr = ['a', 'b', 'c', 'd', 'e'];
arr.shift();

// arr = ['b', 'c', 'd', 'e']
  • splice

: 배열에서 요소를 추가, 제거 또는 교체하는 작업을 수행한다. 이때 원본 배열이 수정된다.

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

 

- deleteCount가 생략되거나

 deleteCount가 array.length(원본 배열 길이) - start 의 값보다 큰 경우, 지정한 start 인덱스부터 끝까지 모두 제거

let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
 
let newArr1 = array.splice(3);			// 원본 : [1, 2, 3]
console.log(newArr1);  				// 삭제 요소 : [4, 5, 6, 7, 8, 9, 10, 11, 12]
 

/* [4, 5, 6, 7, 8, 9, 10, 11, 12]를 가지는 배열에서 다시 splice 진행 */
let newArr2 = newArr1.splice(6, 4);		// 원본2 : [4, 5, 6, 7, 8, 9]
console.log(newArr2);  				// 삭제 요소 :[10, 11, 12]

 

- 음수로 시작하면 뒤에서 6번째부터 수정

let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];

let newArr1 = array.splice(-6, 4);		// 원본 : [1, 2, 3, 4, 5, 6, 11, 12]
console.log(newArr1);  				// 삭제 요소 : [7, 8, 9, 10]

 

 

-  제거된 요소를 포함할 수 있고, 새로 삽입된 요소들 또한 포함

const fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'];

// 인덱스 2번 부터 2개의 요소(cherry, date)를 제거하고, 'grape', 'kiwi'를 삽입
const removedElements = fruits.splice(2, 2, 'grape', 'kiwi');

console.log(fruits); // 원본 배열 : ['apple', 'banana', 'grape', 'kiwi', 'elderberry']
console.log(removedElements); // 삭제된 요소 배열 : ['cherry', 'date']

 

- deleteCount가 0이라면 삭제 없이 뒤에 요소를 추가할 수도 있다!!!!

 

  • slice / slice(start, end)

- 시작 인덱스를 포함한 뒤 추출 / end 번호 바로 앞의 인덱스까지 수행

 

: 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용

=> splice() 함수와 달리 아무리 많이 호출해도 원본 배열의 값은 절대 건드리지 않는다

 

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];


let newArr1 = array.slice(3, 5);			// [4, 5]
let newArr2 = array.slice(undefined, 5);		// [1, 2, 3, 4, 5]
let newArr3 = array.slice(-3);				// [8, 9, 10]
let newArr4 = array.slice(-3, 9);			// [8, 9]
let newArr6 = array.slice(4);				// [5, 6, 7, 8, 9, 10]

 

 

6. forEach . reduce , map , filter , sort 

 

7. replace

: 문자열에서 변경하려는 문자열이 여러 번 반복될 경우, 첫 번째로 발견한 문자열만 치환

 

정규식으로 찾으려는 문자열은 '/'로 감싸서, 파라미터로 들어가는 값이 정규식 임을 알려줍니다.

그리고, '/' 뒤에는 'g'라는 modifier를 붙이면 모든 문자열 치환

str.replace(/A/g,"d")

 

대소문자 구분없이 문자열을 치환 할때는  'i' modifier를 사용

str.replace(/A/gi,"d")

 

8. split()

- 문자열을 배열로 만듦

let newArray = string.split(separator, limit);

 

-separator: 문자열을 분할할 때 사용할 구분자입니다.

이 구분자를 기준으로 문자열이 분할됩니다.

구분자를 지정하지 않으면 문자열 전체가 하나의 요소로 포함된 배열을 반환합니다.

 

-limit (선택 사항): 분할할 최대 요소 수입니다.

이 옵션을 사용하면 배열에 포함될 요소의 수를 제한할 수 있습니다. 

 

* 피라미터에 아무것도 전달하지 않으명 문자열 전체를 length 1인 배열에 담아서 리턴

const 하드웨어 = "cpu memory bus resister";

const arr = 하드웨어.split();

console.log(arr); //["cpu memory bus resister"]
console.log(arr.length); //1

 

* " " 을 통하여 단어별로 잘라서 배열에 담는다

const 하드웨어 = "cpu memory bus resister";

const arr = 하드웨어.split(" ");

console.log(arr); //["cpu","memory","bus","resister"]
console.log(arr.length); //4
console.log(arr[0]); //"cpu"
console.log(arr[1]); //"memory"
console.log(arr[2]); //"bus"
console.log(arr[3]); //"resister"

 

* 글자별로(separator="")잘라서 배열에 담기

const 하드웨어 = "cpu memory bus resister";

const arr = 하드웨어.split("");

console.log(arr); //["c","p","u"," ","m","e","m","o","r","y"," ","b","u","s"," ","r","e","s","i","s","t","e","r"]
console.log(arr.length); //23

 

* 특정 구분자로 잘라서 배열에 담기

const 하드웨어 = "cpu,memory,bus,resister";

const arr = 하드웨어.split(",");

console.log(arr); // ["cpu","memory","bus","resister"]
console.log(arr.length); //4

 

*   limit 값 지정하기 / limit 값에 맞는 배열 생성

const 하드웨어 = "cpu,memory,bus,resister";

const arr = 하드웨어.split(",", 2);

console.log(arr); // ["cpu","memory"]
console.log(arr.length); //2
console.log(arr[0]); //"cpu"
console.log(arr[1]); //"memory"
console.log(arr[2]); //undefined

 

9. 아스키코드

 

10. charCodeAt()

- 문자를 아스키코드를 변환

* 대문자 개수 찾기 예시 / 문자 => 아스키 / 대문자 몇개 있는지 확인

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){         
                let count = 0;
                for(let x of s){
                   
                    let num = x.charCodeAt();
                    if(num>=65 && num<=90){
                        count++;}
                }
                return count;
            }

            let str="KoreaTimeGood";
            console.log(solution(str));
        </script>
    </body>
</html>

 

12. 대문자 소문자 치환

- toUpperCase()

- 문자를 대문자로 치환

- 실제 값은 변하지 않음

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){         
                let count = 0;
                for(let x of s){
                    if(x===x.toUpperCase())count++;
                }
                return count;
            }

            let str="KoreaTimeGood";
            console.log(solution(str));
        </script>
    </body>
</html>

 

 

- toLowerCase()

* 만약 입력 받은 문자가 소문자라면 대문자로 치환하는 코드

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){         
               let answer ="";

               for( x of s){
                if(x === x.toLowerCase()){
                    answer += x.toUpperCase();
                }else answer += x;
               }

                return answer;

            }

            let str="ItisTimeToStudy";
            console.log(solution(str));
        </script>
    </body>
</html>

 

13. 문자열 가르기

  • substr() //!!!!!!!!!!이제 안쓰는 문법!!!!!!!!!!!

문자열의 일부를 일정 길이만큼 추출하고 싶을 때 사용

음수 인덱스를 넘길 수도 있는데요. -1이 끝에서 첫 번째 문자

"문자열".substr(startIndex, length);
"ABCDEFG".substr(2, 3); // "CDE"
"ABCDEFG".substr(-5, 3); //  "CDE"
  • substring()

시작과 종료 인덱스를 기준으로 자르고 싶을 때 사용

=> 두 번째 인자로 문자열 길이 대신에 종료 인덱스를 받는다

음수 인덱스를 넘기면 0을 넘긴 것처럼 작동

"문자열".substring(startIndex, endIndex);
"ABCDEFG".substring(2, 5); // "CDE"
"ABCDEFG".substring(-5, 3); //  "ABC"

 

*slice와의 차이가 무엇일까??

배열을 잘라주는 slice / 문자열을 가르는 substring (slice로 문자열 가르기도 가능...)

 

 ✔ 문자열을 자르는 메서드

문자열.substring(시작인덱스, 종료인덱스)
문자열.substr(시작인덱스, 자를 문자의 길이)
ECMA-262 표준에 따라, substr() 사용을 자제할 것배열을 자르는 메서드
✔ 배열을 자르는 메서드

배열.slice([시작인덱스[, 종료인덱스]]) (원본 배열 안바뀜)
배열.splice([시작인덱스[, 제거할 요소의 수[, 추가할 요소]]]) (원본 배열 바뀜)

 

14. 특정 문자의 위치 찾기

  • indexOf()

:문자열(string)에서 특정 문자열(searchvalue)을 찾고, 
 검색된 문자열이 '첫번째'로 나타나는 위치 index를 리턴 존재하지 않는 경우에는 -1을 반환

let index = string.indexOf(searchValue, startIndex);

 

-  indexOf("o")

문자열에서 'o' 문자의 첫 번째로 등장하는 인덱스 반환

 

- indexOf("o", 5)

문자열에서 인덱스 5부터 검색을 시작하여 'o' 문자의 첫 번째로 등장하는 인덱스 반환

function solution(a) {
    let answer = "";  // 결과를 저장할 변수 초기화

    // 문자열 a의 각 문자를 순차적으로 확인
    for (let i = 0; i < a.length; i++) {
        // 현재 문자가 첫 번째로 등장하는 경우에만 answer에 추가
        if (a.indexOf(a[i]) === i) {
            answer += a[i];  // 첫 등장한 문자만 answer에 추가
        }
    }

    return answer;  // 중복 문자가 제거된 결과 반환
}

console.log(solution("keekkset"));  // 예시 실행, 결과: "kset"

 

a.indexOf(a[i]) === i; 를 통하여 한번만 등장하는 문자를 확인이 가능하다!!!!