프론트엔드 개발자가 될거야./코딩테스트

[코딩테스트] 배열, 문자, 숫자 메서드 총정리

정니정은니 2022. 10. 11. 11:13

코딩테스트는 개발자에게 첫번째 관문이다.

아직 초반이라 어렵지만 그만큼 성장하고 배우고 있다는 증거겠지?

많이 틀리고 고치고 고민하는 이 과정이 개발자로서의 나를 더 단단하게 하고있다고 믿고 꾸준히 해야겠다.

 

현재 프로그래머스 1, 2단계를 풀고있고 

그러면서 문제에 나오는 메서드들을 총정리 해보았다.

메서드들의 사용법이 바로 떠올라야 코딩테스트에 도전장을 내밀 수 있다!!!!!!!!!

 

코딩테스트의 고수가 되는 그날까지.. 파이팅.....⭐️


📌 배열 메서드

- 요소추가 ⇒ push(인자): 뒤, unshift(인자): 앞

- 요소 뽑기 ⇒ pop(): 뒤, shift(): 앞

[ 1, 2, 3, 4 ].pop() ⇒ 4


- 잘라서 원하는 부분만 남김 ⇒ slice(순서,순서) (원본 배열 변형X , 새로운 변수 선언해주기)

"01033334444".slice(7,11) ⇒ “4444”
[1,2,3,4,5].slice(1,4) ⇒ [2,3,4] "01033334444".slice(-4) ⇒ “4444”

- 자르고 그 자리에 원하는 요소 추가 ⇒ splice(순서,순서,값,값…)(원본 배열 변형O) (인자 순서 주의!)

[1,2,3,4,5].splice(2,1,10) ⇒ [1,2,10,4,5] - 2번째 자리에서 하나 제거 후 10추가


- 배열 반대로 뒤집기 ⇒ 배열.reverse()

JavaScript를 사용하면서 문자열을 반전시키고 싶을 때는 reverse()를 사용하면 되는데, 이 메소드는 배열에서 동작하므로 split("")을 사용하여 분리를 먼저 해주면 된다.

- 합치기 ⇒ concat(요소)

[1, 2].concat(3, 4, 5, ‘a’, null) ⇒ [1, 2, 3, 4, 5, ‘a’, null];

[1, 2].concat([3, 4], [5, 6, 7]) ⇒ [1, 2, 3, 4, 5, 6, 7];


- 배열 → 문자 만들기 ⇒ join(””)

['Shane', 'Alan', 'Osbourne'].join(’ ’) ⇒ Shane Alan Osbourne

['Shane', 'Alan', 'Osbourne'].join(’-’) ⇒ Shane-Alan-Osbourne

['Shane', 'Alan', 'Osbourne'].join(’’) ⇒ ShaneAlanOsbourne

- 문자 → 배열 만들기 ⇒ split(””)

"Shane Alan Osbourne".split(" ") ⇒ [ 'Shane', 'Alan', 'Osbourne' ]

"Shane-Alan-Osbourne".split("-") ⇒ [ 'Shane', 'Alan', 'Osbourne' ]

split("")와 join('')은 거의 세트라 생각하자.

- 만족하는 배열의 첫번째 요소 반환 ⇒ find(요소)

- 만족하는 배열의 첫번째 요소의 인덱스 반환 ⇒ findIndex(요소) / indexOf


- 정렬하기 ⇒ sort() / 숫자 배열뿐만 아니라 문자열 배열도 정렬해 준다.

근데 10보다 큰 수가 있다면…..

// 오름차순 ⇒ items.sort((a, b) => a - b); // [2, 10, 20, 30]

// 내림차순 ⇒ items.sort((a, b) => b - a); // [30, 20, 10, 2]

// 이름의 길이순으로 정렬하기 ⇒ names.sort((a, b) => b.length - a.length); // ['Einstein', 'Kittie', 'Sally', 'John']

 

문자열 배열도 알아서 오름차순 정렬해준다.

자동으로 대문자가 먼저 A~Z / 그 다음 소문자 a~z

문자열을 내림차순 하고싶으면 reverse하면 된다.

= "DajBziAlC".split('') -> ['D', 'a', 'j', 'B', 'z', 'i', 'A', 'l', 'C'].split('').sort() -> ['A', 'B', 'C', 'D', 'a', 'i', 'j', 'l', 'z'].split('').sort().reverse()

-> ['z', 'l', 'j', 'i', 'a', 'D', 'C', 'B', 'A'].split('').sort().reverse().join('') -> zljiaDCBA

 

 

 

[ '1', '1', '8', '3', '7', '2' ].sort() → [ '1', '1', '2', '3', '7', '8' ]


- 최소값 구하기(문자열도 가능) ⇒ Math.min(…arr)

const arr =  [ '1', '2', '3', '4' ];

Math.min(…arr) = '1'

- 최대값 구하기(문자열도 가능) ⇒ Math.max(…arr)

const arr =  [ '1', '2', '3', '4' ];

Math.max(…arr) = '4'


- 배열의 총합 구하기 ⇒ reduce((total, el, i) ⇒ total + el ,0)

let sum = [1, 2, 3, 4, 5]
var a = sum.reduce((tot, el, i) => tot + el, 0)
// a = 15
// sum = [1, 2, 3, 4, 5]
// 1번째 tot = 0, el = 1, i = 0, return 1
// 2번째 tot = 1, el = 2, i = 1, return 3
// 3번째 tot = 3, el = 3, i = 2, return 6
// 4번째 tot = 6, el = 4, i = 3, return 5
// 5번째 tot = 10, el = 5, i = 4, return 15

📌 숫자 메서드

제곱근이 정수면 약수의 개수는 홀수이다!!!!!!
isNaN() = ‘숫자가 아니니?’ → 숫자면 false / 숫자가 아니면 true

- Math.sqrt(x) : x의 제곱근을 반환한다.

예를들어 Matn.sqrt(144) = 12

- Math.pow(base,exponent) : base에 exponent를 제곱한 값을 반환한다.

예를들어 Math.pow(12,2) = 144(12*12)

- Number.isInteger(x) : x 정수면 true, 아니면 false

예를들어 Number.isInteger(Math.sqrt(16)) = true 예를들어 Number.isInteger(Math.sqrt(15)) = false


📌 문자 메서드

- JavaScript를 사용하면서 문자열을 반전시키고 싶을 때는 reverse()를 사용하면 되는데,
이 메소드는 배열에서 동작하므로 split("")을 사용하여 분리를 먼저 해주면 된다.
- parseInt(문자)하면 NaN출력!!!

- charAt(인수) - 인수번째의 문자를 읽어 냅니다.

예) "javascript".charAt(2)에는 'v'가 읽어 집니다. 0부터 시작하기 때문에 3번째인 'v'가 읽어 집니다.

 

- indexOf(인수) - 인수가 들어있는 위치를 알려 줍니다.

예) "javascript".indexOf("s")에는 4가 읽어 집니다. 0부터 시작하기 때문입니다.(lastIndexOf는 뒤에서부터 셈)

 

- substring(인수, 인수) - charAt은 문자하나를 읽어내지만 substring은 문자열을 읽어 냅니다.

예) "javascript".substring(1, 3) = "ava"를 추출 / 0부터 시작하기 때문입니다.

예) "javascript".substring(1) = "avascript"를 추출 / 0부터 시작하기 때문입니다.


- 대문자로 변경 => toUpperCase()

- 소문자로 변경 => toLowerCase()


- startsWith

- endsWith

- includes

const email = 'yealee.kim87@gmail.com';

console.log(email.startsWith('ye')); //true
console.log(email.endsWith('com')); //true
console.log(email.includes('@gmail')); //true

그리고 특정 문자열을 반복하고 싶으면 repeat 함수를 쓰면 된다.

'#'.repeat(3); //'###'